<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/*
<span class='line'>  2</span>  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
<span class='line'>  3</span>  *
<span class='line'>  4</span>  * Copyright 1997-2011 Sun Microsystems, Inc. All rights reserved.
<span class='line'>  5</span>  *
<span class='line'>  6</span>  * The contents of this file are subject to the terms of either the GNU
<span class='line'>  7</span>  * General Public License Version 2 only ("GPL") or the Common Development
<span class='line'>  8</span>  * and Distribution License("CDDL") (collectively, the "License").  You
<span class='line'>  9</span>  * may not use this file except in compliance with the License. You can obtain
<span class='line'> 10</span>  * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
<span class='line'> 11</span>  * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
<span class='line'> 12</span>  * language governing permissions and limitations under the License.
<span class='line'> 13</span>  *
<span class='line'> 14</span>  * When distributing the software, include this License Header Notice in each
<span class='line'> 15</span>  * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
<span class='line'> 16</span>  * Sun designates this particular file as subject to the "Classpath" exception
<span class='line'> 17</span>  * as provided by Sun in the GPL Version 2 section of the License file that
<span class='line'> 18</span>  * accompanied this code.  If applicable, add the following below the License
<span class='line'> 19</span>  * Header, with the fields enclosed by brackets [] replaced by your own
<span class='line'> 20</span>  * identifying information: "Portions Copyrighted [year]
<span class='line'> 21</span>  * [name of copyright owner]"
<span class='line'> 22</span>  *
<span class='line'> 23</span>  * Contributor(s):
<span class='line'> 24</span>  *
<span class='line'> 25</span>  * If you wish your version of this file to be governed by only the CDDL or
<span class='line'> 26</span>  * only the GPL Version 2, indicate your decision by adding "[Contributor]
<span class='line'> 27</span>  * elects to include this software in this distribution under the [CDDL or GPL
<span class='line'> 28</span>  * Version 2] license."  If you don't indicate a single choice of license, a
<span class='line'> 29</span>  * recipient has the option to distribute your version of this file under
<span class='line'> 30</span>  * either the CDDL, the GPL Version 2 or to extend the choice of license to
<span class='line'> 31</span>  * its licensees as provided above.  However, if you add GPL Version 2 code
<span class='line'> 32</span>  * and therefore, elected the GPL Version 2 license, then the option applies
<span class='line'> 33</span>  * only if the new code is made subject to such option by the copyright
<span class='line'> 34</span>  * holder.
<span class='line'> 35</span>  *
<span class='line'> 36</span>  *
<span class='line'> 37</span>  * This file incorporates work covered by the following copyright and
<span class='line'> 38</span>  * permission notices:
<span class='line'> 39</span>  *
<span class='line'> 40</span>  * Copyright 2004 The Apache Software Foundation
<span class='line'> 41</span>  * Copyright 2004-2008 Emmanouil Batsis, mailto: mbatsis at users full stop sourceforge full stop net
<span class='line'> 42</span>  *
<span class='line'> 43</span>  * Licensed under the Apache License, Version 2.0 (the "License");
<span class='line'> 44</span>  * you may not use this file except in compliance with the License.
<span class='line'> 45</span>  * You may obtain a copy of the License at
<span class='line'> 46</span>  *
<span class='line'> 47</span>  *     http://www.apache.org/licenses/LICENSE-2.0
<span class='line'> 48</span>  *
<span class='line'> 49</span>  * Unless required by applicable law or agreed to in writing, software
<span class='line'> 50</span>  * distributed under the License is distributed on an "AS IS" BASIS,
<span class='line'> 51</span>  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
<span class='line'> 52</span>  * See the License for the specific language governing permissions and
<span class='line'> 53</span>  * limitations under the License.
<span class='line'> 54</span>  */</span><span class="WHIT">
<span class='line'> 55</span> 
<span class='line'> 56</span> </span><span class="COMM">/**
<span class='line'> 57</span>  @project JSF JavaScript Library
<span class='line'> 58</span>  @version 2.0
<span class='line'> 59</span>  @description This is the standard implementation of the JSF JavaScript Library.
<span class='line'> 60</span>  */</span><span class="WHIT">
<span class='line'> 61</span> 
<span class='line'> 62</span> </span><span class="COMM">/**
<span class='line'> 63</span>  * Register with OpenAjax
<span class='line'> 64</span>  */</span><span class="WHIT">
<span class='line'> 65</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">OpenAjax</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT">
<span class='line'> 66</span>     </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">OpenAjax.hub.registerLibrary</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 67</span>     </span><span class="NAME">OpenAjax.hub.registerLibrary</span><span class="PUNC">(</span><span class="STRN">"jsf"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"www.sun.com"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"2.0"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 68</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 69</span> 
<span class='line'> 70</span> </span><span class="COMM">// Detect if this is already loaded, and if loaded, if it's a higher version</span><span class="WHIT">
<span class='line'> 71</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">jsf</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">jsf.specversion</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">jsf.specversion</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">20000</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT">
<span class='line'> 72</span>       </span><span class="PUNC">(</span><span class="NAME">jsf.implversion</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">jsf.implversion</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 73</span> 
<span class='line'> 74</span>     </span><span class="COMM">/**
<span class='line'> 75</span>      * The top level global namespace for JavaServer Faces functionality.
<span class='line'> 76</span>      * @name jsf
<span class='line'> 77</span>      * @namespace
<span class='line'> 78</span>      */</span><span class="WHIT">
<span class='line'> 79</span>     </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">jsf</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 80</span> 
<span class='line'> 81</span>     </span><span class="COMM">/**
<span class='line'> 82</span>      * The namespace for Ajax functionality.
<span class='line'> 83</span>      * @name jsf.ajax
<span class='line'> 84</span>      * @namespace
<span class='line'> 85</span>      * @exec
<span class='line'> 86</span>      */</span><span class="WHIT">
<span class='line'> 87</span>     </span><span class="NAME">jsf.ajax</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 88</span> 
<span class='line'> 89</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">eventListeners</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 90</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">errorListeners</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 91</span> 
<span class='line'> 92</span>         </span><span class="COMM">/**
<span class='line'> 93</span>          * Determine if the current browser is part of Microsoft's failed attempt at
<span class='line'> 94</span>          * standards modification.
<span class='line'> 95</span>          * @ignore
<span class='line'> 96</span>          */</span><span class="WHIT">
<span class='line'> 97</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">isIE</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">isIE</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 98</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">isIECache</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 99</span>                 </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">isIECache</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>100</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>101</span>             </span><span class="NAME">isIECache</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT">
<span class='line'>102</span>                    </span><span class="NAME">document.all</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">window.ActiveXObject</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT">
<span class='line'>103</span>                    </span><span class="NAME">navigator.userAgent.toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">indexOf</span><span class="PUNC">(</span><span class="STRN">"msie"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT">
<span class='line'>104</span>                    </span><span class="NAME">navigator.userAgent.toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">indexOf</span><span class="PUNC">(</span><span class="STRN">"opera"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>105</span>             </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">isIECache</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>106</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>107</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">isIECache</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>108</span> 
<span class='line'>109</span>         </span><span class="COMM">/**
<span class='line'>110</span>          * Determine if loading scripts into the page executes the script.
<span class='line'>111</span>          * This is instead of doing a complicated browser detection algorithm.  Some do, some don't.
<span class='line'>112</span>          * @returns {boolean} does including a script in the dom execute it?
<span class='line'>113</span>          * @ignore
<span class='line'>114</span>          */</span><span class="WHIT">
<span class='line'>115</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">isAutoExec</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">isAutoExec</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>116</span>             </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>117</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">isAutoExecCache</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>118</span>                     </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">isAutoExecCache</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>119</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>120</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">autoExecTestString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"&lt;script>var mojarra = mojarra || {};mojarra.autoExecTest = true;&lt;/script>"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>121</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tempElement</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">'span'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>122</span>                 </span><span class="NAME">tempElement.innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">autoExecTestString</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>123</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">body</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.getElementsByTagName</span><span class="PUNC">(</span><span class="STRN">'body'</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>124</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tempNode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">body.appendChild</span><span class="PUNC">(</span><span class="NAME">tempElement</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>125</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">mojarra</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">mojarra.autoExecTest</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>126</span>                     </span><span class="NAME">isAutoExecCache</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>127</span>                     </span><span class="KEYW">delete</span><span class="WHIT"> </span><span class="NAME">mojarra.autoExecTest</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>128</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>129</span>                     </span><span class="NAME">isAutoExecCache</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>130</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>131</span>                 </span><span class="NAME">deleteNode</span><span class="PUNC">(</span><span class="NAME">tempNode</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>132</span>                 </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">isAutoExecCache</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>133</span>             </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ex</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>134</span>                 </span><span class="COMM">// OK, that didn't work, we'll have to make an assumption</span><span class="WHIT">
<span class='line'>135</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">isAutoExecCache</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>136</span>                     </span><span class="NAME">isAutoExecCache</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>137</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>138</span>                 </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">isAutoExecCache</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>139</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>140</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>141</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">isAutoExecCache</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>142</span> 
<span class='line'>143</span>         </span><span class="COMM">/**
<span class='line'>144</span>          * @ignore
<span class='line'>145</span>          */</span><span class="WHIT">
<span class='line'>146</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">getTransport</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">getTransport</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>147</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">methods</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT">
<span class='line'>148</span>                 </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>149</span>                     </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">XMLHttpRequest</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>150</span>                 </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>151</span>                 </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>152</span>                     </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ActiveXObject</span><span class="PUNC">(</span><span class="STRN">'Msxml2.XMLHTTP'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>153</span>                 </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>154</span>                 </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>155</span>                     </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ActiveXObject</span><span class="PUNC">(</span><span class="STRN">'Microsoft.XMLHTTP'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>156</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>157</span>             </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>158</span> 
<span class='line'>159</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">returnVal</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>160</span>             </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">methods.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>161</span>                 </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>162</span>                     </span><span class="NAME">returnVal</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">methods</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>163</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>164</span>                     </span><span class="KEYW">continue</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>165</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>166</span>                 </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">returnVal</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>167</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>168</span>             </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">'Could not create an XHR object.'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>169</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>170</span> 
<span class='line'>171</span>         </span><span class="COMM">/**
<span class='line'>172</span>          * Find instance of passed String via getElementById
<span class='line'>173</span>          * @ignore
<span class='line'>174</span>          */</span><span class="WHIT">
<span class='line'>175</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">$</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">$</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>176</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">results</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">element</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>177</span>             </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">arguments.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>178</span>                 </span><span class="NAME">element</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>179</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">element</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'string'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>180</span>                     </span><span class="NAME">element</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.getElementById</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>181</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>182</span>                 </span><span class="NAME">results.push</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>183</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>184</span>             </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">results.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">results</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">results</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>185</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>186</span> 
<span class='line'>187</span>         </span><span class="COMM">/**
<span class='line'>188</span>          * Get the form element which encloses the supplied element.
<span class='line'>189</span>          * @param element - element to act against in search
<span class='line'>190</span>          * @returns form element representing enclosing form, or first form if none found.
<span class='line'>191</span>          * @ignore
<span class='line'>192</span>          */</span><span class="WHIT">
<span class='line'>193</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">getForm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">getForm</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>194</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>195</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">form</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">$</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>196</span>                 </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">form</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>197</span> 
<span class='line'>198</span>                     </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">form.nodeName</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">form.nodeName.toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'form'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>199</span>                         </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">form</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>200</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>201</span>                     </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">form.form</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>202</span>                         </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">form.form</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>203</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>204</span>                     </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">form.parentNode</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>205</span>                         </span><span class="NAME">form</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">form.parentNode</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>206</span>                     </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>207</span>                         </span><span class="NAME">form</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>208</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>209</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>210</span>                 </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">document.forms</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>211</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>212</span>             </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>213</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>214</span> 
<span class='line'>215</span>         </span><span class="COMM">/**
<span class='line'>216</span>          * Check if a value exists in an array
<span class='line'>217</span>          * @ignore
<span class='line'>218</span>          */</span><span class="WHIT">
<span class='line'>219</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">isInArray</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">isInArray</span><span class="PUNC">(</span><span class="NAME">array</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>220</span>             </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">array.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>221</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">array</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>222</span>                     </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>223</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>224</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>225</span>             </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>226</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>227</span> 
<span class='line'>228</span> 
<span class='line'>229</span>         </span><span class="COMM">/**
<span class='line'>230</span>          * Evaluate JavaScript code in a global context.
<span class='line'>231</span>          * @param src JavaScript code to evaluate
<span class='line'>232</span>          * @ignore
<span class='line'>233</span>          */</span><span class="WHIT">
<span class='line'>234</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">globalEval</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">globalEval</span><span class="PUNC">(</span><span class="NAME">src</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>235</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">window.execScript</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>236</span>                 </span><span class="NAME">window.execScript</span><span class="PUNC">(</span><span class="NAME">src</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>237</span>                 </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>238</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>239</span>             </span><span class="COMM">// We have to wrap the call in an anon function because of a firefox bug, where this is incorrectly set</span><span class="WHIT">
<span class='line'>240</span>             </span><span class="COMM">// We need to explicitly call window.eval because of a Chrome peculiarity</span><span class="WHIT">
<span class='line'>241</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fn</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>242</span>                 </span><span class="NAME">window.eval.call</span><span class="PUNC">(</span><span class="NAME">window</span><span class="PUNC">,</span><span class="NAME">src</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>243</span>             </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>244</span>             </span><span class="NAME">fn</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>245</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>246</span> 
<span class='line'>247</span>         </span><span class="COMM">/**
<span class='line'>248</span>          * Get all scripts from supplied string, return them as an array for later processing.
<span class='line'>249</span>          * @param str
<span class='line'>250</span>          * @returns {array} of script text
<span class='line'>251</span>          * @ignore
<span class='line'>252</span>          */</span><span class="WHIT">
<span class='line'>253</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">stripScripts</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">stripScripts</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>254</span>             </span><span class="COMM">// Regex to find all scripts in a string</span><span class="WHIT">
<span class='line'>255</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">findscripts</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="REGX">/&lt;script[^>]*>([\S\s]*?)&lt;\/script>/igm</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>256</span>             </span><span class="COMM">// Regex to find one script, to isolate it's content [2] and attributes [1]</span><span class="WHIT">
<span class='line'>257</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">findscript</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="REGX">/&lt;script([^>]*)>([\S\s]*?)&lt;\/script>/im</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>258</span>             </span><span class="COMM">// Regex to remove leading cruft</span><span class="WHIT">
<span class='line'>259</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">stripStart</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="REGX">/^\s*(&lt;!--)*\s*(\/\/)*\s*(\/\*)*\s*(&lt;!\[CDATA\[)*/</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>260</span>             </span><span class="COMM">// Regex to find src attribute</span><span class="WHIT">
<span class='line'>261</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">findsrc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="REGX">/src="([\S]*?)"/im</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>262</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">initialnodes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>263</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">scripts</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>264</span>             </span><span class="NAME">initialnodes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">str.match</span><span class="PUNC">(</span><span class="NAME">findscripts</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>265</span>             </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">!</span><span class="NAME">initialnodes</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">initialnodes.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>266</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">scriptStr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>267</span>                 </span><span class="NAME">scriptStr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">initialnodes.shift</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">match</span><span class="PUNC">(</span><span class="NAME">findscript</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>268</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">src</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>269</span>                 </span><span class="COMM">// check if src specified</span><span class="WHIT">
<span class='line'>270</span>                 </span><span class="NAME">src</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">scriptStr</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">match</span><span class="PUNC">(</span><span class="NAME">findsrc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>271</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">script</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>272</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">!</span><span class="NAME">src</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">src</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>273</span>                     </span><span class="COMM">// if this is a file, load it</span><span class="WHIT">
<span class='line'>274</span>                     </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">url</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">src</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>275</span>                     </span><span class="COMM">// if this is another copy of jsf.js, don't load it</span><span class="WHIT">
<span class='line'>276</span>                     </span><span class="COMM">// it's never necessary, and can make debugging difficult</span><span class="WHIT">
<span class='line'>277</span>                     </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="REGX">/\/javax.faces.resource\/jsf.js\?ln=javax\.faces/</span><span class="PUNC">.</span><span class="NAME">test</span><span class="PUNC">(</span><span class="NAME">url</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>278</span>                         </span><span class="NAME">script</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>279</span>                     </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>280</span>                         </span><span class="NAME">script</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">loadScript</span><span class="PUNC">(</span><span class="NAME">url</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>281</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>282</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">!</span><span class="NAME">scriptStr</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">scriptStr</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>283</span>                     </span><span class="COMM">// else get content of tag, without leading CDATA and such</span><span class="WHIT">
<span class='line'>284</span>                     </span><span class="NAME">script</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">scriptStr</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="NAME">stripStart</span><span class="PUNC">,</span><span class="STRN">""</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>285</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>286</span>                     </span><span class="NAME">script</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>287</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>288</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">!</span><span class="NAME">script</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>289</span>                     </span><span class="NAME">scripts.push</span><span class="PUNC">(</span><span class="NAME">script</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>290</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>291</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>292</span>             </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">scripts</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>293</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>294</span> 
<span class='line'>295</span>         </span><span class="COMM">/**
<span class='line'>296</span>          * Load a script via a url, use synchronous XHR request.  This is liable to be slow,
<span class='line'>297</span>          * but it's probably the only correct way.
<span class='line'>298</span>          * @param url the url to load
<span class='line'>299</span>          * @ignore
<span class='line'>300</span>          */</span><span class="WHIT">
<span class='line'>301</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">loadScript</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">loadScript</span><span class="PUNC">(</span><span class="NAME">url</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>302</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">xhr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">getTransport</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>303</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">xhr</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>304</span>                 </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>305</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>306</span> 
<span class='line'>307</span>             </span><span class="NAME">xhr.open</span><span class="PUNC">(</span><span class="STRN">"GET"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">url</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>308</span>             </span><span class="NAME">xhr.setRequestHeader</span><span class="PUNC">(</span><span class="STRN">"Content-Type"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"application/x-javascript"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>309</span>             </span><span class="NAME">xhr.send</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>310</span> 
<span class='line'>311</span>             </span><span class="COMM">// PENDING graceful error handling</span><span class="WHIT">
<span class='line'>312</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">xhr.readyState</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">xhr.status</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">200</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>313</span>                     </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">xhr.responseText</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>314</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>315</span> 
<span class='line'>316</span>             </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>317</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>318</span> 
<span class='line'>319</span>         </span><span class="COMM">/**
<span class='line'>320</span>          * Run an array of scripts text
<span class='line'>321</span>          * @param scripts array of script nodes
<span class='line'>322</span>          * @ignore
<span class='line'>323</span>          */</span><span class="WHIT">
<span class='line'>324</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">runScripts</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">runScripts</span><span class="PUNC">(</span><span class="NAME">scripts</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>325</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">scripts</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">scripts.length</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>326</span>                 </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>327</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>328</span> 
<span class='line'>329</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">head</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.getElementsByTagName</span><span class="PUNC">(</span><span class="STRN">'head'</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">document.documentElement</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>330</span>             </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">scripts.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>331</span>                 </span><span class="COMM">// create script node</span><span class="WHIT">
<span class='line'>332</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">scriptNode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">'script'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>333</span>                 </span><span class="NAME">scriptNode.type</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'text/javascript'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>334</span>                 </span><span class="NAME">scriptNode.text</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">scripts.shift</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// add the code to the script node</span><span class="WHIT">
<span class='line'>335</span>                 </span><span class="NAME">head.appendChild</span><span class="PUNC">(</span><span class="NAME">scriptNode</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// add it to the page</span><span class="WHIT">
<span class='line'>336</span>                 </span><span class="NAME">head.removeChild</span><span class="PUNC">(</span><span class="NAME">scriptNode</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// then remove it</span><span class="WHIT">
<span class='line'>337</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>338</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>339</span> 
<span class='line'>340</span>         </span><span class="COMM">/**
<span class='line'>341</span>          * Replace DOM element with a new tagname and supplied innerHTML
<span class='line'>342</span>          * @param element element to replace
<span class='line'>343</span>          * @param tempTagName new tag name to replace with
<span class='line'>344</span>          * @param src string new content for element
<span class='line'>345</span>          * @ignore
<span class='line'>346</span>          */</span><span class="WHIT">
<span class='line'>347</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">elementReplaceStr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">elementReplaceStr</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">tempTagName</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">src</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>348</span> 
<span class='line'>349</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">temp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="NAME">tempTagName</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>350</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">element.id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>351</span>                 </span><span class="NAME">temp.id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">element.id</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>352</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>353</span> 
<span class='line'>354</span>             </span><span class="COMM">// Creating a head element isn't allowed in IE, and faulty in most browsers,</span><span class="WHIT">
<span class='line'>355</span>             </span><span class="COMM">// so it is not allowed</span><span class="WHIT">
<span class='line'>356</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">element.nodeName.toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"head"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>357</span>                 </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"Attempted to replace a head element - this is not allowed."</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>358</span>             </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>359</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">scripts</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>360</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">isAutoExec</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>361</span>                     </span><span class="NAME">temp.innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">src</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>362</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>363</span>                     </span><span class="COMM">// Get scripts from text</span><span class="WHIT">
<span class='line'>364</span>                     </span><span class="NAME">scripts</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">stripScripts</span><span class="PUNC">(</span><span class="NAME">src</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>365</span>                     </span><span class="COMM">// Remove scripts from text</span><span class="WHIT">
<span class='line'>366</span>                     </span><span class="NAME">src</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">src.replace</span><span class="PUNC">(</span><span class="REGX">/&lt;script[^>]*>([\S\s]*?)&lt;\/script>/igm</span><span class="PUNC">,</span><span class="STRN">""</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>367</span>                     </span><span class="NAME">temp.innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">src</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>368</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>369</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>370</span> 
<span class='line'>371</span>             </span><span class="NAME">replaceNode</span><span class="PUNC">(</span><span class="NAME">temp</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">element</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">            
<span class='line'>372</span>             </span><span class="NAME">runScripts</span><span class="PUNC">(</span><span class="NAME">scripts</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>373</span> 
<span class='line'>374</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>375</span> 
<span class='line'>376</span>         </span><span class="COMM">/**
<span class='line'>377</span>          * Get a string with the concatenated values of all string nodes under the given node
<span class='line'>378</span>          * @param  oNode the given DOM node
<span class='line'>379</span>          * @param  deep boolean - whether to recursively scan the children nodes of the given node for text as well. Default is &lt;code>false&lt;/code>
<span class='line'>380</span>          * @ignore
<span class='line'>381</span>          * Note:  This code originally from Sarissa: http://dev.abiss.gr/sarissa
<span class='line'>382</span>          * It has been modified to fit into the overall codebase
<span class='line'>383</span>          */</span><span class="WHIT">
<span class='line'>384</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">getText</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">getText</span><span class="PUNC">(</span><span class="NAME">oNode</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">deep</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>385</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">Node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="NAME">ELEMENT_NODE</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ATTRIBUTE_NODE</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">TEXT_NODE</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">CDATA_SECTION_NODE</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>386</span>                 </span><span class="NAME">ENTITY_REFERENCE_NODE</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">5</span><span class="PUNC">,</span><span class="WHIT">  </span><span class="NAME">ENTITY_NODE</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">6</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">PROCESSING_INSTRUCTION_NODE</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">7</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>387</span>                 </span><span class="NAME">COMMENT_NODE</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">DOCUMENT_NODE</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">9</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">DOCUMENT_TYPE_NODE</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>388</span>                 </span><span class="NAME">DOCUMENT_FRAGMENT_NODE</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">11</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">NOTATION_NODE</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">12</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>389</span> 
<span class='line'>390</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>391</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nodes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">oNode.childNodes</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>392</span>             </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">nodes.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>393</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">nodes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>394</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nodeType</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node.nodeType</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>395</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">nodeType</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Node.TEXT_NODE</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">nodeType</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Node.CDATA_SECTION_NODE</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>396</span>                     </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node.data</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>397</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">deep</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">nodeType</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Node.ELEMENT_NODE</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
<span class='line'>398</span>                                              </span><span class="NAME">nodeType</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Node.DOCUMENT_NODE</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
<span class='line'>399</span>                                              </span><span class="NAME">nodeType</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Node.DOCUMENT_FRAGMENT_NODE</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>400</span>                     </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">getText</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>401</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>402</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>403</span>             </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>404</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>405</span> 
<span class='line'>406</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PARSED_OK</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Document contains no parsing errors"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>407</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PARSED_EMPTY</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Document is empty"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>408</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PARSED_UNKNOWN_ERROR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Not well-formed or other error"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>409</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">getParseErrorText</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>410</span>         </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">isIE</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>411</span>             </span><span class="COMM">/**
<span class='line'>412</span>              * Note: This code orginally from Sarissa: http://dev.abiss.gr/sarissa
<span class='line'>413</span>              * @ignore
<span class='line'>414</span>              */</span><span class="WHIT">
<span class='line'>415</span>             </span><span class="NAME">getParseErrorText</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oDoc</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>416</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">parseErrorText</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PARSED_OK</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>417</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oDoc</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">oDoc.parseError</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">oDoc.parseError.errorCode</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">oDoc.parseError.errorCode</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>418</span>                     </span><span class="NAME">parseErrorText</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"XML Parsing Error: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">oDoc.parseError.reason</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
<span class='line'>419</span>                                      </span><span class="STRN">"\nLocation: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">oDoc.parseError.url</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
<span class='line'>420</span>                                      </span><span class="STRN">"\nLine Number "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">oDoc.parseError.line</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">", Column "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
<span class='line'>421</span>                                      </span><span class="NAME">oDoc.parseError.linepos</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
<span class='line'>422</span>                                      </span><span class="STRN">":\n"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">oDoc.parseError.srcText</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
<span class='line'>423</span>                                      </span><span class="STRN">"\n"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>424</span>                     </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">oDoc.parseError.linepos</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>425</span>                         </span><span class="NAME">parseErrorText</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"-"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>426</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>427</span>                     </span><span class="NAME">parseErrorText</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"^\n"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>428</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>429</span>                 </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oDoc.documentElement</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>430</span>                     </span><span class="NAME">parseErrorText</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PARSED_EMPTY</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>431</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>432</span>                 </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">parseErrorText</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>433</span>             </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>434</span>         </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// (non-IE)</span><span class="WHIT">
<span class='line'>435</span> 
<span class='line'>436</span>             </span><span class="COMM">/**
<span class='line'>437</span>              * &lt;p>Returns a human readable description of the parsing error. Useful
<span class='line'>438</span>              * for debugging. Tip: append the returned error string in a &lt;pre&gt;
<span class='line'>439</span>              * element if you want to render it.&lt;/p>
<span class='line'>440</span>              * @param  oDoc The target DOM document
<span class='line'>441</span>              * @returns {String} The parsing error description of the target Document in
<span class='line'>442</span>              *          human readable form (preformated text)
<span class='line'>443</span>              * @ignore
<span class='line'>444</span>              * Note:  This code orginally from Sarissa: http://dev.abiss.gr/sarissa
<span class='line'>445</span>              */</span><span class="WHIT">
<span class='line'>446</span>             </span><span class="NAME">getParseErrorText</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oDoc</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>447</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">parseErrorText</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PARSED_OK</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>448</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">oDoc</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">oDoc.documentElement</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>449</span>                     </span><span class="NAME">parseErrorText</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PARSED_EMPTY</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>450</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oDoc.documentElement.tagName</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"parsererror"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>451</span>                     </span><span class="NAME">parseErrorText</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">oDoc.documentElement.firstChild.data</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>452</span>                     </span><span class="NAME">parseErrorText</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"\n"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">oDoc.documentElement.firstChild.nextSibling.firstChild.data</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>453</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oDoc.getElementsByTagName</span><span class="PUNC">(</span><span class="STRN">"parsererror"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>454</span>                     </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">parsererror</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">oDoc.getElementsByTagName</span><span class="PUNC">(</span><span class="STRN">"parsererror"</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>455</span>                     </span><span class="NAME">parseErrorText</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">getText</span><span class="PUNC">(</span><span class="NAME">parsererror</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"\n"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>456</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oDoc.parseError</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">oDoc.parseError.errorCode</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>457</span>                     </span><span class="NAME">parseErrorText</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PARSED_UNKNOWN_ERROR</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>458</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>459</span>                 </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">parseErrorText</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>460</span>             </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>461</span>         </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>462</span> 
<span class='line'>463</span>         </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">document.importNode</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">isIE</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>464</span>             </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>465</span>                 </span><span class="COMM">/**
<span class='line'>466</span>                  * Implementation of importNode for the context window document in IE.
<span class='line'>467</span>                  * If &lt;code>oNode&lt;/code> is a TextNode, &lt;code>bChildren&lt;/code> is ignored.
<span class='line'>468</span>                  * @param oNode the Node to import
<span class='line'>469</span>                  * @param bChildren whether to include the children of oNode
<span class='line'>470</span>                  * @returns the imported node for further use
<span class='line'>471</span>                  * @ignore
<span class='line'>472</span>                  * Note:  This code orginally from Sarissa: http://dev.abiss.gr/sarissa
<span class='line'>473</span>                  */</span><span class="WHIT">
<span class='line'>474</span>                 </span><span class="NAME">document.importNode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">oNode</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bChildren</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>475</span>                     </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tmp</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>476</span>                     </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oNode.nodeName</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'#text'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>477</span>                         </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">document.createTextNode</span><span class="PUNC">(</span><span class="NAME">oNode.data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>478</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>479</span>                     </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>480</span>                         </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oNode.nodeName</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"tbody"</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">oNode.nodeName</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"tr"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>481</span>                             </span><span class="NAME">tmp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">"table"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>482</span>                         </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>483</span>                         </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oNode.nodeName</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"td"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>484</span>                             </span><span class="NAME">tmp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">"tr"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>485</span>                         </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>486</span>                         </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oNode.nodeName</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"option"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>487</span>                             </span><span class="NAME">tmp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">"select"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>488</span>                         </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>489</span>                         </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>490</span>                             </span><span class="NAME">tmp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">"div"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>491</span>                         </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>492</span>                         </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">bChildren</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>493</span>                             </span><span class="NAME">tmp.innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">oNode.xml</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">oNode.xml</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">oNode.outerHTML</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>494</span>                         </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>495</span>                             </span><span class="NAME">tmp.innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">oNode.xml</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">oNode.cloneNode</span><span class="PUNC">(</span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">xml</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">oNode.cloneNode</span><span class="PUNC">(</span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">outerHTML</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>496</span>                         </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>497</span>                         </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">tmp.getElementsByTagName</span><span class="PUNC">(</span><span class="STRN">"*"</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>498</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>499</span>                 </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>500</span>             </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>501</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>502</span>         </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>503</span>         </span><span class="COMM">// Setup Node type constants for those browsers that don't have them (IE)</span><span class="WHIT">
<span class='line'>504</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">Node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="NAME">ELEMENT_NODE</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ATTRIBUTE_NODE</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">TEXT_NODE</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">CDATA_SECTION_NODE</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>505</span>             </span><span class="NAME">ENTITY_REFERENCE_NODE</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">5</span><span class="PUNC">,</span><span class="WHIT">  </span><span class="NAME">ENTITY_NODE</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">6</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">PROCESSING_INSTRUCTION_NODE</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">7</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>506</span>             </span><span class="NAME">COMMENT_NODE</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">DOCUMENT_NODE</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">9</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">DOCUMENT_TYPE_NODE</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>507</span>             </span><span class="NAME">DOCUMENT_FRAGMENT_NODE</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">11</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">NOTATION_NODE</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">12</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>508</span> 
<span class='line'>509</span>         </span><span class="COMM">// PENDING - add support for removing handlers added via DOM 2 methods</span><span class="WHIT">
<span class='line'>510</span>         </span><span class="COMM">/**
<span class='line'>511</span>          * Delete all events attached to a node
<span class='line'>512</span>          * @param node
<span class='line'>513</span>          * @ignore
<span class='line'>514</span>          */</span><span class="WHIT">
<span class='line'>515</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">clearEvents</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">clearEvents</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>516</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>517</span>                 </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>518</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>519</span> 
<span class='line'>520</span>             </span><span class="COMM">// don't do anything for text and comment nodes - unnecessary</span><span class="WHIT">
<span class='line'>521</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">node.nodeType</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Node.TEXT_NODE</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">node.nodeType</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Node.COMMENT_NODE</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>522</span>                 </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>523</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>524</span> 
<span class='line'>525</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">events</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">'abort'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'blur'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'change'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'error'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'focus'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'load'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'reset'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'resize'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'scroll'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'select'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'submit'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'unload'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>526</span>             </span><span class="STRN">'keydown'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'keypress'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'keyup'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'click'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'mousedown'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'mousemove'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'mouseout'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'mouseover'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'mouseup'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'dblclick'</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>527</span>             </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>528</span>                 </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">e</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">events</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>529</span>                     </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">events.hasOwnProperty</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>530</span>                         </span><span class="NAME">node</span><span class="PUNC">[</span><span class="NAME">e</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>531</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>532</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>533</span>             </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ex</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>534</span>                 </span><span class="COMM">// it's OK if it fails, at least we tried</span><span class="WHIT">
<span class='line'>535</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>536</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>537</span> 
<span class='line'>538</span>         </span><span class="COMM">/**
<span class='line'>539</span>          * Deletes node
<span class='line'>540</span>          * @param node
<span class='line'>541</span>          * @ignore
<span class='line'>542</span>          */</span><span class="WHIT">
<span class='line'>543</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">deleteNode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">deleteNode</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>544</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>545</span>                 </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>546</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>547</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">node.parentNode</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>548</span>                 </span><span class="COMM">// if there's no parent, there's nothing to do</span><span class="WHIT">
<span class='line'>549</span>                 </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>550</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>551</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">isIE</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>552</span>                 </span><span class="COMM">// nothing special required</span><span class="WHIT">
<span class='line'>553</span>                 </span><span class="NAME">node.parentNode.removeChild</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>554</span>                 </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>555</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>556</span>             </span><span class="COMM">// The rest of this code is specialcasing for IE</span><span class="WHIT">
<span class='line'>557</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">node.nodeName.toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"body"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>558</span>                 </span><span class="COMM">// special case for removing body under IE.</span><span class="WHIT">
<span class='line'>559</span>                 </span><span class="NAME">deleteChildren</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>560</span>                 </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>561</span>                     </span><span class="NAME">node.outerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>562</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ex</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>563</span>                     </span><span class="COMM">// fails under some circumstances, but not in RI</span><span class="WHIT">
<span class='line'>564</span>                     </span><span class="COMM">// supplied responses.  If we've gotten here, it's</span><span class="WHIT">
<span class='line'>565</span>                     </span><span class="COMM">// fairly safe to leave a lingering body tag rather than</span><span class="WHIT">
<span class='line'>566</span>                     </span><span class="COMM">// fail outright</span><span class="WHIT">
<span class='line'>567</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>568</span>                 </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>569</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>570</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">temp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node.ownerDocument.createElement</span><span class="PUNC">(</span><span class="STRN">'div'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>571</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">parent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node.parentNode</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>572</span>             </span><span class="NAME">temp.appendChild</span><span class="PUNC">(</span><span class="NAME">parent.removeChild</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>573</span>             </span><span class="COMM">// Now clean up the temporary element</span><span class="WHIT">
<span class='line'>574</span>             </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>575</span>                 </span><span class="NAME">temp.outerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">//prevent leak in IE</span><span class="WHIT">
<span class='line'>576</span>             </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ex</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>577</span>                 </span><span class="COMM">// at least we tried.  Fails in some circumstances,</span><span class="WHIT">
<span class='line'>578</span>                 </span><span class="COMM">// but not in RI supplied responses.  Better to leave a lingering</span><span class="WHIT">
<span class='line'>579</span>                 </span><span class="COMM">// temporary div than to fail outright.</span><span class="WHIT">
<span class='line'>580</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>581</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>582</span> 
<span class='line'>583</span>         </span><span class="COMM">/**
<span class='line'>584</span>          * Deletes all children of a node
<span class='line'>585</span>          * @param node
<span class='line'>586</span>          * @ignore
<span class='line'>587</span>          */</span><span class="WHIT">
<span class='line'>588</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">deleteChildren</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">deleteChildren</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>589</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>590</span>                 </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>591</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>592</span>             </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node.childNodes.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">x</span><span class="PUNC">--</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">//delete all of node's children</span><span class="WHIT">
<span class='line'>593</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">childNode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node.childNodes</span><span class="PUNC">[</span><span class="NAME">x</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>594</span>                 </span><span class="NAME">deleteNode</span><span class="PUNC">(</span><span class="NAME">childNode</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>595</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>596</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>597</span> 
<span class='line'>598</span>         </span><span class="COMM">/**
<span class='line'>599</span>          * &lt;p> Copies the childNodes of nodeFrom to nodeTo&lt;/p>
<span class='line'>600</span>          *
<span class='line'>601</span>          * @param  nodeFrom the Node to copy the childNodes from
<span class='line'>602</span>          * @param  nodeTo the Node to copy the childNodes to
<span class='line'>603</span>          * @ignore
<span class='line'>604</span>          * Note:  This code originally from Sarissa:  http://dev.abiss.gr/sarissa
<span class='line'>605</span>          * It has been modified to fit into the overall codebase
<span class='line'>606</span>          */</span><span class="WHIT">
<span class='line'>607</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">copyChildNodes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">copyChildNodes</span><span class="PUNC">(</span><span class="NAME">nodeFrom</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">nodeTo</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>608</span> 
<span class='line'>609</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">nodeFrom</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">nodeTo</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>610</span>                 </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="STRN">"Both source and destination nodes must be provided"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>611</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>612</span> 
<span class='line'>613</span>             </span><span class="NAME">deleteChildren</span><span class="PUNC">(</span><span class="NAME">nodeTo</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>614</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nodes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">nodeFrom.childNodes</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>615</span>             </span><span class="COMM">// if within the same doc, just move, else copy and delete</span><span class="WHIT">
<span class='line'>616</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">nodeFrom.ownerDocument</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">nodeTo.ownerDocument</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>617</span>                 </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">nodeFrom.firstChild</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>618</span>                     </span><span class="NAME">nodeTo.appendChild</span><span class="PUNC">(</span><span class="NAME">nodeFrom.firstChild</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>619</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>620</span>             </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>621</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ownerDoc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">nodeTo.nodeType</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Node.DOCUMENT_NODE</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">nodeTo</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">nodeTo.ownerDocument</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>622</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>623</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">ownerDoc.importNode</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>624</span>                     </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">nodes.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>625</span>                         </span><span class="NAME">nodeTo.appendChild</span><span class="PUNC">(</span><span class="NAME">ownerDoc.importNode</span><span class="PUNC">(</span><span class="NAME">nodes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>626</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>627</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>628</span>                     </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">nodes.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>629</span>                         </span><span class="NAME">nodeTo.appendChild</span><span class="PUNC">(</span><span class="NAME">nodes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">cloneNode</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>630</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>631</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>632</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>633</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>634</span> 
<span class='line'>635</span> 
<span class='line'>636</span>         </span><span class="COMM">/**
<span class='line'>637</span>          * Replace one node with another.  Necessary for handling IE memory leak.
<span class='line'>638</span>          * @param node
<span class='line'>639</span>          * @param newNode
<span class='line'>640</span>          * @ignore
<span class='line'>641</span>          */</span><span class="WHIT">
<span class='line'>642</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">replaceNode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">replaceNode</span><span class="PUNC">(</span><span class="NAME">newNode</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>643</span>                </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">isIE</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>644</span>                     </span><span class="NAME">node.parentNode.insertBefore</span><span class="PUNC">(</span><span class="NAME">newNode</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>645</span>                     </span><span class="NAME">deleteNode</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>646</span>                </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>647</span>                     </span><span class="NAME">node.parentNode.replaceChild</span><span class="PUNC">(</span><span class="NAME">newNode</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>648</span>                </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>649</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>650</span> 
<span class='line'>651</span> 
<span class='line'>652</span>         </span><span class="COMM">/**
<span class='line'>653</span>          * copy all attributes from one element to another - except id
<span class='line'>654</span>          * @param target element to copy attributes to
<span class='line'>655</span>          * @param source element to copy attributes from
<span class='line'>656</span>          * @ignore
<span class='line'>657</span>          */</span><span class="WHIT">
<span class='line'>658</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cloneAttributes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">cloneAttributes</span><span class="PUNC">(</span><span class="NAME">target</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">source</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>659</span> 
<span class='line'>660</span>             </span><span class="COMM">// enumerate core element attributes - without 'dir' as special case</span><span class="WHIT">
<span class='line'>661</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">coreElementAttributes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">'className'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'title'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'lang'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'xml:lang'</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>662</span> 
<span class='line'>663</span>             </span><span class="COMM">// Enumerate additional input element attributes</span><span class="WHIT">
<span class='line'>664</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">inputElementAttributes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT">
<span class='line'>665</span>                     </span><span class="PUNC">[</span><span class="WHIT">   </span><span class="STRN">'name'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'value'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'checked'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'disabled'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'readOnly'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>666</span>                         </span><span class="STRN">'size'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'maxLength'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'src'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'alt'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'useMap'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'isMap'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>667</span>                         </span><span class="STRN">'tabIndex'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'accessKey'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'accept'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'type'</span><span class="WHIT">
<span class='line'>668</span>                     </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>669</span> 
<span class='line'>670</span>             </span><span class="COMM">// Enumerate all the names of the event listeners</span><span class="WHIT">
<span class='line'>671</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">listenerNames</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT">
<span class='line'>672</span>                     </span><span class="PUNC">[</span><span class="WHIT"> </span><span class="STRN">'onclick'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'ondblclick'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'onmousedown'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'onmousemove'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'onmouseout'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>673</span>                         </span><span class="STRN">'onmouseover'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'onmouseup'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'onkeydown'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'onkeypress'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'onkeyup'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>674</span>                         </span><span class="STRN">'onhelp'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'onblur'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'onfocus'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'onchange'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'onload'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'onunload'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'onabort'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>675</span>                         </span><span class="STRN">'onreset'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'onselect'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'onsubmit'</span><span class="WHIT">
<span class='line'>676</span>                     </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>677</span> 
<span class='line'>678</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">iIndex</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">iLength</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// for loop variables</span><span class="WHIT">
<span class='line'>679</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">attributeName</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// name of the attribute to set</span><span class="WHIT">
<span class='line'>680</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">newValue</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">oldValue</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// attribute values in each element</span><span class="WHIT">
<span class='line'>681</span> 
<span class='line'>682</span>             </span><span class="COMM">// First, copy over core attributes</span><span class="WHIT">
<span class='line'>683</span>             </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">iIndex</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="NAME">iLength</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">coreElementAttributes.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">iIndex</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">iLength</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">iIndex</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>684</span>                 </span><span class="NAME">attributeName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">coreElementAttributes</span><span class="PUNC">[</span><span class="NAME">iIndex</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>685</span>                 </span><span class="NAME">newValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">source</span><span class="PUNC">[</span><span class="NAME">attributeName</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>686</span>                 </span><span class="NAME">oldValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">target</span><span class="PUNC">[</span><span class="NAME">attributeName</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>687</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oldValue</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">newValue</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>688</span>                     </span><span class="NAME">target</span><span class="PUNC">[</span><span class="NAME">attributeName</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">newValue</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>689</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>690</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>691</span> 
<span class='line'>692</span>             </span><span class="COMM">// Next, if it's an input, copy those over</span><span class="WHIT">
<span class='line'>693</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">target.nodeName.toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'input'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>694</span>                 </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">iIndex</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="NAME">iLength</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">inputElementAttributes.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">iIndex</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">iLength</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">iIndex</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>695</span>                     </span><span class="NAME">attributeName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">inputElementAttributes</span><span class="PUNC">[</span><span class="NAME">iIndex</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>696</span>                     </span><span class="NAME">newValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">source</span><span class="PUNC">[</span><span class="NAME">attributeName</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>697</span>                     </span><span class="NAME">oldValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">target</span><span class="PUNC">[</span><span class="NAME">attributeName</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>698</span>                     </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oldValue</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">newValue</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>699</span>                         </span><span class="NAME">target</span><span class="PUNC">[</span><span class="NAME">attributeName</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">newValue</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>700</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>701</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>702</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>703</span>             </span><span class="COMM">//'style' attribute special case</span><span class="WHIT">
<span class='line'>704</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">newStyle</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">source.getAttribute</span><span class="PUNC">(</span><span class="STRN">'style'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>705</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oldStyle</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">target.getAttribute</span><span class="PUNC">(</span><span class="STRN">'style'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>706</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">newStyle</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">oldStyle</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>707</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">isIE</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>708</span>                     </span><span class="NAME">target.style.setAttribute</span><span class="PUNC">(</span><span class="STRN">'cssText'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">newStyle</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>709</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>710</span>                     </span><span class="NAME">target.setAttribute</span><span class="PUNC">(</span><span class="STRN">'style'</span><span class="PUNC">,</span><span class="NAME">newStyle</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>711</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>712</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>713</span>             </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">lIndex</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">lLength</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">listenerNames.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">lIndex</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">lLength</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">lIndex</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>714</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">listenerNames</span><span class="PUNC">[</span><span class="NAME">lIndex</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>715</span>                 </span><span class="NAME">target</span><span class="PUNC">[</span><span class="NAME">name</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">source</span><span class="PUNC">[</span><span class="NAME">name</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">source</span><span class="PUNC">[</span><span class="NAME">name</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>716</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">source</span><span class="PUNC">[</span><span class="NAME">name</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>717</span>                     </span><span class="NAME">source</span><span class="PUNC">[</span><span class="NAME">name</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>718</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>719</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>720</span>             </span><span class="COMM">// Special case for 'dir' attribute</span><span class="WHIT">
<span class='line'>721</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">isIE</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">source.dir</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">target.dir</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>722</span>                 </span><span class="NAME">target.dir</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">source.dir</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">source.dir</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>723</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>724</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>725</span> 
<span class='line'>726</span>         </span><span class="COMM">/**
<span class='line'>727</span>          * Replace an element from one document into another
<span class='line'>728</span>          * @param newElement new element to put in document
<span class='line'>729</span>          * @param origElement original element to replace
<span class='line'>730</span>          * @ignore
<span class='line'>731</span>          */</span><span class="WHIT">
<span class='line'>732</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">elementReplace</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">elementReplace</span><span class="PUNC">(</span><span class="NAME">newElement</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">origElement</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>733</span>             </span><span class="NAME">copyChildNodes</span><span class="PUNC">(</span><span class="NAME">newElement</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">origElement</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>734</span>             </span><span class="COMM">// sadly, we have to reparse all over again</span><span class="WHIT">
<span class='line'>735</span>             </span><span class="COMM">// to reregister the event handlers and styles</span><span class="WHIT">
<span class='line'>736</span>             </span><span class="COMM">// PENDING do some performance tests on large pages</span><span class="WHIT">
<span class='line'>737</span>             </span><span class="NAME">origElement.innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">origElement.innerHTML</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>738</span> 
<span class='line'>739</span>             </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>740</span>                 </span><span class="NAME">cloneAttributes</span><span class="PUNC">(</span><span class="NAME">origElement</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">newElement</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>741</span>             </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ex</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>742</span>                 </span><span class="COMM">// if in dev mode, report an error, else try to limp onward</span><span class="WHIT">
<span class='line'>743</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">jsf.getProjectStage</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"Development"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>744</span>                     </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"Error updating attributes"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>745</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>746</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>747</span>             </span><span class="NAME">deleteNode</span><span class="PUNC">(</span><span class="NAME">newElement</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>748</span> 
<span class='line'>749</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>750</span> 
<span class='line'>751</span>         </span><span class="COMM">/**
<span class='line'>752</span>          * Create a new document, then select the body element within it
<span class='line'>753</span>          * @param docStr Stringified version of document to create
<span class='line'>754</span>          * @return element the body element
<span class='line'>755</span>          * @ignore
<span class='line'>756</span>          */</span><span class="WHIT">
<span class='line'>757</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">getBodyElement</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">getBodyElement</span><span class="PUNC">(</span><span class="NAME">docStr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>758</span> 
<span class='line'>759</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">doc</span><span class="PUNC">;</span><span class="WHIT">  </span><span class="COMM">// intermediate document we'll create</span><span class="WHIT">
<span class='line'>760</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">body</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// Body element to return</span><span class="WHIT">
<span class='line'>761</span> 
<span class='line'>762</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">DOMParser</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">  </span><span class="COMM">// FF, S, Chrome</span><span class="WHIT">
<span class='line'>763</span>                 </span><span class="NAME">doc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">DOMParser</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">parseFromString</span><span class="PUNC">(</span><span class="NAME">docStr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"text/xml"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>764</span>             </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">ActiveXObject</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// IE</span><span class="WHIT">
<span class='line'>765</span>                 </span><span class="NAME">doc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ActiveXObject</span><span class="PUNC">(</span><span class="STRN">"MSXML2.DOMDocument"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>766</span>                 </span><span class="NAME">doc.loadXML</span><span class="PUNC">(</span><span class="NAME">docStr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>767</span>             </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>768</span>                 </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"You don't seem to be running a supported browser"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>769</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>770</span> 
<span class='line'>771</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">getParseErrorText</span><span class="PUNC">(</span><span class="NAME">doc</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">PARSED_OK</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>772</span>                 </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="NAME">getParseErrorText</span><span class="PUNC">(</span><span class="NAME">doc</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>773</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>774</span> 
<span class='line'>775</span>             </span><span class="NAME">body</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.getElementsByTagName</span><span class="PUNC">(</span><span class="STRN">"body"</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>776</span> 
<span class='line'>777</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">body</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>778</span>                 </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"Can't find body tag in returned document."</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>779</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>780</span> 
<span class='line'>781</span>             </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">body</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>782</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>783</span> 
<span class='line'>784</span>         </span><span class="COMM">/**
<span class='line'>785</span>          * Do update.
<span class='line'>786</span>          * @param element element to update
<span class='line'>787</span>          * @param context context of request
<span class='line'>788</span>          * @ignore
<span class='line'>789</span>          */</span><span class="WHIT">
<span class='line'>790</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">doUpdate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">doUpdate</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>791</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">content</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">markup</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">state</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>792</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">stateForm</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>793</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">scripts</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// temp holding value for array of script nodes</span><span class="WHIT">
<span class='line'>794</span> 
<span class='line'>795</span>             </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">element.getAttribute</span><span class="PUNC">(</span><span class="STRN">'id'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>796</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"javax.faces.ViewState"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>797</span> 
<span class='line'>798</span>                 </span><span class="NAME">state</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">element.firstChild</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>799</span> 
<span class='line'>800</span>                 </span><span class="COMM">// Now set the view state from the server into the DOM</span><span class="WHIT">
<span class='line'>801</span>                 </span><span class="COMM">// but only for the form that submitted the request.</span><span class="WHIT">
<span class='line'>802</span> 
<span class='line'>803</span>                 </span><span class="NAME">stateForm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.getElementById</span><span class="PUNC">(</span><span class="NAME">context.formid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>804</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">stateForm</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">stateForm.elements</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>805</span>                     </span><span class="COMM">// if the form went away for some reason, or it lacks elements </span><span class="WHIT">
<span class='line'>806</span>                     </span><span class="COMM">// we're going to just return silently.</span><span class="WHIT">
<span class='line'>807</span>                     </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>808</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>809</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">field</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">stateForm.elements</span><span class="PUNC">[</span><span class="STRN">"javax.faces.ViewState"</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>810</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">field</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>811</span>                     </span><span class="NAME">field</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">"input"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>812</span>                     </span><span class="NAME">field.type</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"hidden"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>813</span>                     </span><span class="NAME">field.name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"javax.faces.ViewState"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>814</span>                     </span><span class="NAME">stateForm.appendChild</span><span class="PUNC">(</span><span class="NAME">field</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>815</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>816</span>                 </span><span class="NAME">field.value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">state.nodeValue</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>817</span> 
<span class='line'>818</span>                 </span><span class="COMM">// Now set the view state from the server into the DOM</span><span class="WHIT">
<span class='line'>819</span>                 </span><span class="COMM">// for any form that is a render target.</span><span class="WHIT">
<span class='line'>820</span> 
<span class='line'>821</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">context.render</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">context.render</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>822</span>                     </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">temp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">context.render.split</span><span class="PUNC">(</span><span class="STRN">' '</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>823</span>                     </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">temp.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>824</span>                         </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">temp.hasOwnProperty</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>825</span>                             </span><span class="COMM">// See if the element is a form and</span><span class="WHIT">
<span class='line'>826</span>                             </span><span class="COMM">// the form is not the one that caused the submission..</span><span class="WHIT">
<span class='line'>827</span>                             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">f</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.forms</span><span class="PUNC">[</span><span class="NAME">temp</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>828</span>                             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">f</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">f</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">f.id</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">context.formid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>829</span>                                 </span><span class="NAME">field</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">f.elements</span><span class="PUNC">[</span><span class="STRN">"javax.faces.ViewState"</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>830</span>                                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">field</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>831</span>                                     </span><span class="NAME">field</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">"input"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>832</span>                                     </span><span class="NAME">field.type</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"hidden"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>833</span>                                     </span><span class="NAME">field.name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"javax.faces.ViewState"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>834</span>                                     </span><span class="NAME">f.appendChild</span><span class="PUNC">(</span><span class="NAME">field</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>835</span>                                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>836</span>                                 </span><span class="NAME">field.value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">state.nodeValue</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>837</span>                             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>838</span>                         </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>839</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>840</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>841</span>                 </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>842</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>843</span> 
<span class='line'>844</span>             </span><span class="COMM">// join the CDATA sections in the markup</span><span class="WHIT">
<span class='line'>845</span>             </span><span class="NAME">markup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>846</span>             </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">element.childNodes.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">j</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>847</span>                 </span><span class="NAME">content</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">element.childNodes</span><span class="PUNC">[</span><span class="NAME">j</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>848</span>                 </span><span class="NAME">markup</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">content.nodeValue</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>849</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>850</span> 
<span class='line'>851</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">src</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">markup</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>852</span> 
<span class='line'>853</span>             </span><span class="COMM">// If our special render all markup is present..</span><span class="WHIT">
<span class='line'>854</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"javax.faces.ViewRoot"</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"javax.faces.ViewBody"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>855</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bodyStartEx</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">RegExp</span><span class="PUNC">(</span><span class="STRN">"&lt; *body[^>]*>"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"gi"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>856</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bodyEndEx</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">RegExp</span><span class="PUNC">(</span><span class="STRN">"&lt; */ *body[^>]*>"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"gi"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>857</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">newsrc</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>858</span> 
<span class='line'>859</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">docBody</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.getElementsByTagName</span><span class="PUNC">(</span><span class="STRN">"body"</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>860</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bodyStart</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bodyStartEx.exec</span><span class="PUNC">(</span><span class="NAME">src</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>861</span> 
<span class='line'>862</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">bodyStart</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// replace body tag</span><span class="WHIT">
<span class='line'>863</span>                     </span><span class="COMM">// First, try with XML manipulation</span><span class="WHIT">
<span class='line'>864</span>                     </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>865</span>                         </span><span class="COMM">// Get scripts from text</span><span class="WHIT">
<span class='line'>866</span>                         </span><span class="NAME">scripts</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">stripScripts</span><span class="PUNC">(</span><span class="NAME">src</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>867</span>                         </span><span class="COMM">// Remove scripts from text</span><span class="WHIT">
<span class='line'>868</span>                         </span><span class="NAME">newsrc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">src.replace</span><span class="PUNC">(</span><span class="REGX">/&lt;script[^>]*>([\S\s]*?)&lt;\/script>/igm</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>869</span>                         </span><span class="NAME">elementReplace</span><span class="PUNC">(</span><span class="NAME">getBodyElement</span><span class="PUNC">(</span><span class="NAME">newsrc</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">docBody</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>870</span>                         </span><span class="NAME">runScripts</span><span class="PUNC">(</span><span class="NAME">scripts</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>871</span>                     </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>872</span>                         </span><span class="COMM">// OK, replacing the body didn't work with XML - fall back to quirks mode insert</span><span class="WHIT">
<span class='line'>873</span>                         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">srcBody</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bodyEnd</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>874</span>                         </span><span class="COMM">// if src contains &lt;/body></span><span class="WHIT">
<span class='line'>875</span>                         </span><span class="NAME">bodyEnd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bodyEndEx.exec</span><span class="PUNC">(</span><span class="NAME">src</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>876</span>                         </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">bodyEnd</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>877</span>                             </span><span class="NAME">srcBody</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">src.substring</span><span class="PUNC">(</span><span class="NAME">bodyStartEx.lastIndex</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>878</span>                                     </span><span class="NAME">bodyEnd.index</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>879</span>                         </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// can't find the &lt;/body> tag, punt</span><span class="WHIT">
<span class='line'>880</span>                             </span><span class="NAME">srcBody</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">src.substring</span><span class="PUNC">(</span><span class="NAME">bodyStartEx.lastIndex</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>881</span>                         </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>882</span>                         </span><span class="COMM">// replace body contents with innerHTML - note, script handling happens within function</span><span class="WHIT">
<span class='line'>883</span>                         </span><span class="NAME">elementReplaceStr</span><span class="PUNC">(</span><span class="NAME">docBody</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"body"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">srcBody</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>884</span> 
<span class='line'>885</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>886</span> 
<span class='line'>887</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">  </span><span class="COMM">// replace body contents with innerHTML - note, script handling happens within function</span><span class="WHIT">
<span class='line'>888</span>                     </span><span class="NAME">elementReplaceStr</span><span class="PUNC">(</span><span class="NAME">docBody</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"body"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">src</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>889</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>890</span>             </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"javax.faces.ViewHead"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>891</span>                 </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"javax.faces.ViewHead not supported - browsers cannot reliably replace the head's contents"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>892</span>             </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>893</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">$</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>894</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>895</span>                     </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"During update: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" not found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>896</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>897</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">parent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d.parentNode</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>898</span>                 </span><span class="COMM">// Trim space padding before assigning to innerHTML</span><span class="WHIT">
<span class='line'>899</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">html</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">src.replace</span><span class="PUNC">(</span><span class="REGX">/^\s+/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/\s+$/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>900</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">parserElement</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">'div'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>901</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d.nodeName.toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>902</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tableElements</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">'td'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'th'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'tr'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'tbody'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'thead'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'tfoot'</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>903</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">isInTable</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>904</span>                 </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tei</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">tel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tableElements.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">tei</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">tel</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">tei</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>905</span>                     </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tableElements</span><span class="PUNC">[</span><span class="NAME">tei</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>906</span>                         </span><span class="NAME">isInTable</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>907</span>                         </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>908</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>909</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>910</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">isInTable</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>911</span> 
<span class='line'>912</span>                     </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">isAutoExec</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>913</span>                         </span><span class="COMM">// Create html</span><span class="WHIT">
<span class='line'>914</span>                         </span><span class="NAME">parserElement.innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'&lt;table>'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">html</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'&lt;/table>'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>915</span>                     </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>916</span>                         </span><span class="COMM">// Get the scripts from the text</span><span class="WHIT">
<span class='line'>917</span>                         </span><span class="NAME">scripts</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">stripScripts</span><span class="PUNC">(</span><span class="NAME">html</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>918</span>                         </span><span class="COMM">// Remove scripts from text</span><span class="WHIT">
<span class='line'>919</span>                         </span><span class="NAME">html</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">html.replace</span><span class="PUNC">(</span><span class="REGX">/&lt;script[^>]*>([\S\s]*?)&lt;\/script>/igm</span><span class="PUNC">,</span><span class="STRN">""</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>920</span>                         </span><span class="NAME">parserElement.innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'&lt;table>'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">html</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'&lt;/table>'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>921</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>922</span>                     </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">newElement</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parserElement.firstChild</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>923</span>                     </span><span class="COMM">//some browsers will also create intermediary elements such as table>tbody>tr>td</span><span class="WHIT">
<span class='line'>924</span>                     </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">newElement</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">newElement.id</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>925</span>                         </span><span class="NAME">newElement</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">newElement.firstChild</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>926</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>927</span>                     </span><span class="NAME">parent.replaceChild</span><span class="PUNC">(</span><span class="NAME">newElement</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">d</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>928</span>                     </span><span class="NAME">runScripts</span><span class="PUNC">(</span><span class="NAME">scripts</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>929</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d.nodeName.toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'input'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>930</span>                     </span><span class="COMM">// special case handling for 'input' elements</span><span class="WHIT">
<span class='line'>931</span>                     </span><span class="COMM">// in order to not lose focus when updating,</span><span class="WHIT">
<span class='line'>932</span>                     </span><span class="COMM">// input elements need to be added in place.</span><span class="WHIT">
<span class='line'>933</span>                     </span><span class="NAME">parserElement</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">'div'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>934</span>                     </span><span class="NAME">parserElement.innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">html</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>935</span>                     </span><span class="NAME">newElement</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parserElement.firstChild</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>936</span> 
<span class='line'>937</span>                     </span><span class="NAME">cloneAttributes</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">newElement</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>938</span>                     </span><span class="NAME">deleteNode</span><span class="PUNC">(</span><span class="NAME">parserElement</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>939</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">html.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>940</span>                     </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">isAutoExec</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>941</span>                         </span><span class="COMM">// Create html</span><span class="WHIT">
<span class='line'>942</span>                         </span><span class="NAME">parserElement.innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">html</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>943</span>                     </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>944</span>                         </span><span class="COMM">// Get the scripts from the text</span><span class="WHIT">
<span class='line'>945</span>                         </span><span class="NAME">scripts</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">stripScripts</span><span class="PUNC">(</span><span class="NAME">html</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>946</span>                         </span><span class="COMM">// Remove scripts from text</span><span class="WHIT">
<span class='line'>947</span>                         </span><span class="NAME">html</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">html.replace</span><span class="PUNC">(</span><span class="REGX">/&lt;script[^>]*>([\S\s]*?)&lt;\/script>/igm</span><span class="PUNC">,</span><span class="STRN">""</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>948</span>                         </span><span class="NAME">parserElement.innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">html</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>949</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>950</span>                     </span><span class="NAME">replaceNode</span><span class="PUNC">(</span><span class="NAME">parserElement.firstChild</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">d</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>951</span>                     </span><span class="NAME">deleteNode</span><span class="PUNC">(</span><span class="NAME">parserElement</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>952</span>                     </span><span class="NAME">runScripts</span><span class="PUNC">(</span><span class="NAME">scripts</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>953</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>954</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>955</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>956</span> 
<span class='line'>957</span>         </span><span class="COMM">/**
<span class='line'>958</span>          * Delete a node specified by the element.
<span class='line'>959</span>          * @param element
<span class='line'>960</span>          * @ignore
<span class='line'>961</span>          */</span><span class="WHIT">
<span class='line'>962</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">doDelete</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">doDelete</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>963</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">element.getAttribute</span><span class="PUNC">(</span><span class="STRN">'id'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>964</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">target</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">$</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>965</span>             </span><span class="NAME">deleteNode</span><span class="PUNC">(</span><span class="NAME">target</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>966</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>967</span> 
<span class='line'>968</span>         </span><span class="COMM">/**
<span class='line'>969</span>          * Insert a node specified by the element.
<span class='line'>970</span>          * @param element
<span class='line'>971</span>          * @ignore
<span class='line'>972</span>          */</span><span class="WHIT">
<span class='line'>973</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">doInsert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">doInsert</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>974</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tablePattern</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">RegExp</span><span class="PUNC">(</span><span class="STRN">"&lt;\\s*(td|th|tr|tbody|thead|tfoot)"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"i"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>975</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">scripts</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>976</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">target</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">$</span><span class="PUNC">(</span><span class="NAME">element.firstChild.getAttribute</span><span class="PUNC">(</span><span class="STRN">'id'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>977</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">parent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">target.parentNode</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>978</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">html</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">element.firstChild.firstChild.nodeValue</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>979</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">isInTable</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tablePattern.test</span><span class="PUNC">(</span><span class="NAME">html</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>980</span> 
<span class='line'>981</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">isAutoExec</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">  </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>982</span>                 </span><span class="COMM">// Get the scripts from the text</span><span class="WHIT">
<span class='line'>983</span>                 </span><span class="NAME">scripts</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">stripScripts</span><span class="PUNC">(</span><span class="NAME">html</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>984</span>                 </span><span class="COMM">// Remove scripts from text</span><span class="WHIT">
<span class='line'>985</span>                 </span><span class="NAME">html</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">html.replace</span><span class="PUNC">(</span><span class="REGX">/&lt;script[^>]*>([\S\s]*?)&lt;\/script>/igm</span><span class="PUNC">,</span><span class="STRN">""</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>986</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>987</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tempElement</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">'div'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>988</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">newElement</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>989</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">isInTable</span><span class="PUNC">)</span><span class="WHIT">  </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>990</span>                 </span><span class="NAME">tempElement.innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'&lt;table>'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">html</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'&lt;/table>'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>991</span>                 </span><span class="NAME">newElement</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tempElement.firstChild</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>992</span>                 </span><span class="COMM">//some browsers will also create intermediary elements such as table>tbody>tr>td</span><span class="WHIT">
<span class='line'>993</span>                 </span><span class="COMM">//test for presence of id on the new element since we do not have it directly</span><span class="WHIT">
<span class='line'>994</span>                 </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">newElement</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">""</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">newElement.id</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>995</span>                     </span><span class="NAME">newElement</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">newElement.firstChild</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>996</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>997</span>             </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>998</span>                 </span><span class="NAME">tempElement.innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">html</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>999</span>                 </span><span class="NAME">newElement</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tempElement.firstChild</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1000</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1001</span> 
<span class='line'>1002</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">element.firstChild.nodeName</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'after'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1003</span>                 </span><span class="COMM">// Get the next in the list, to insert before</span><span class="WHIT">
<span class='line'>1004</span>                 </span><span class="NAME">target</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">target.nextSibling</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1005</span>             </span><span class="PUNC">}</span><span class="WHIT">  </span><span class="COMM">// otherwise, this is a 'before' element</span><span class="WHIT">
<span class='line'>1006</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">!</span><span class="NAME">tempElement.innerHTML</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// check if only scripts were inserted - if so, do nothing here</span><span class="WHIT">
<span class='line'>1007</span>                 </span><span class="NAME">parent.insertBefore</span><span class="PUNC">(</span><span class="NAME">newElement</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">target</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1008</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1009</span>             </span><span class="NAME">runScripts</span><span class="PUNC">(</span><span class="NAME">scripts</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1010</span>             </span><span class="NAME">deleteNode</span><span class="PUNC">(</span><span class="NAME">tempElement</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1011</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1012</span> 
<span class='line'>1013</span>         </span><span class="COMM">/**
<span class='line'>1014</span>          * Modify attributes of given element id.
<span class='line'>1015</span>          * @param element
<span class='line'>1016</span>          * @ignore
<span class='line'>1017</span>          */</span><span class="WHIT">
<span class='line'>1018</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">doAttributes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">doAttributes</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1019</span> 
<span class='line'>1020</span>             </span><span class="COMM">// Get id of element we'll act against</span><span class="WHIT">
<span class='line'>1021</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">element.getAttribute</span><span class="PUNC">(</span><span class="STRN">'id'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1022</span> 
<span class='line'>1023</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">target</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">$</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1024</span> 
<span class='line'>1025</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">target</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1026</span>                 </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"The specified id: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" was not found in the page."</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1027</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1028</span> 
<span class='line'>1029</span>             </span><span class="COMM">// There can be multiple attributes modified.  Loop through the list.</span><span class="WHIT">
<span class='line'>1030</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nodes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">element.childNodes</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1031</span>             </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">nodes.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1032</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">nodes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">getAttribute</span><span class="PUNC">(</span><span class="STRN">'name'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1033</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">nodes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">getAttribute</span><span class="PUNC">(</span><span class="STRN">'value'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1034</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">isIE</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1035</span>                     </span><span class="NAME">target.setAttribute</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1036</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// if it's IE, then quite a bit more work is required</span><span class="WHIT">
<span class='line'>1037</span>                     </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'class'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1038</span>                         </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'className'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1039</span>                         </span><span class="NAME">target.setAttribute</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1040</span>                     </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"for"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1041</span>                         </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'htmlFor'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1042</span>                         </span><span class="NAME">target.setAttribute</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1043</span>                     </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'style'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1044</span>                         </span><span class="NAME">target.style.setAttribute</span><span class="PUNC">(</span><span class="STRN">'cssText'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1045</span>                     </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">name.substring</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'on'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1046</span>                         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fn</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1047</span>                             </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1048</span>                                 </span><span class="NAME">window.execScript</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1049</span>                             </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1050</span>                         </span><span class="PUNC">}</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1051</span>                         </span><span class="NAME">target.setAttribute</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fn</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1052</span>                     </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'dir'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1053</span>                         </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">jsf.getProjectStage</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'Development'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1054</span>                             </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"Cannot set 'dir' attribute in IE"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1055</span>                         </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1056</span>                     </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1057</span>                         </span><span class="NAME">target.setAttribute</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1058</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1059</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1060</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1061</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1062</span> 
<span class='line'>1063</span>         </span><span class="COMM">/**
<span class='line'>1064</span>          * Eval the CDATA of the element.
<span class='line'>1065</span>          * @param element to eval
<span class='line'>1066</span>          * @ignore
<span class='line'>1067</span>          */</span><span class="WHIT">
<span class='line'>1068</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">doEval</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">doEval</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1069</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">evalText</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">element.firstChild.nodeValue</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1070</span>             </span><span class="NAME">globalEval</span><span class="PUNC">(</span><span class="NAME">evalText</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1071</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1072</span> 
<span class='line'>1073</span>         </span><span class="COMM">/**
<span class='line'>1074</span>          * Ajax Request Queue
<span class='line'>1075</span>          * @ignore
<span class='line'>1076</span>          */</span><span class="WHIT">
<span class='line'>1077</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">Queue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">Queue</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1078</span> 
<span class='line'>1079</span>             </span><span class="COMM">// Create the internal queue</span><span class="WHIT">
<span class='line'>1080</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">queue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1081</span> 
<span class='line'>1082</span> 
<span class='line'>1083</span>             </span><span class="COMM">// the amount of space at the front of the queue, initialised to zero</span><span class="WHIT">
<span class='line'>1084</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">queueSpace</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1085</span> 
<span class='line'>1086</span>             </span><span class="COMM">/** Returns the size of this Queue. The size of a Queue is equal to the number
<span class='line'>1087</span>              * of elements that have been enqueued minus the number of elements that have
<span class='line'>1088</span>              * been dequeued.
<span class='line'>1089</span>              * @ignore
<span class='line'>1090</span>              */</span><span class="WHIT">
<span class='line'>1091</span>             </span><span class="NAME">this.getSize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">getSize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1092</span>                 </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">queue.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">queueSpace</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1093</span>             </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1094</span> 
<span class='line'>1095</span>             </span><span class="COMM">/** Returns true if this Queue is empty, and false otherwise. A Queue is empty
<span class='line'>1096</span>              * if the number of elements that have been enqueued equals the number of
<span class='line'>1097</span>              * elements that have been dequeued.
<span class='line'>1098</span>              * @ignore
<span class='line'>1099</span>              */</span><span class="WHIT">
<span class='line'>1100</span>             </span><span class="NAME">this.isEmpty</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">isEmpty</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1101</span>                 </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">queue.length</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1102</span>             </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1103</span> 
<span class='line'>1104</span>             </span><span class="COMM">/** Enqueues the specified element in this Queue.
<span class='line'>1105</span>              *
<span class='line'>1106</span>              * @param element - the element to enqueue
<span class='line'>1107</span>              * @ignore
<span class='line'>1108</span>              */</span><span class="WHIT">
<span class='line'>1109</span>             </span><span class="NAME">this.enqueue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">enqueue</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1110</span>                 </span><span class="COMM">// Queue the request</span><span class="WHIT">
<span class='line'>1111</span>                 </span><span class="NAME">queue.push</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1112</span>             </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1113</span> 
<span class='line'>1114</span> 
<span class='line'>1115</span>             </span><span class="COMM">/** Dequeues an element from this Queue. The oldest element in this Queue is
<span class='line'>1116</span>              * removed and returned. If this Queue is empty then undefined is returned.
<span class='line'>1117</span>              *
<span class='line'>1118</span>              * @returns Object The element that was removed from the queue.
<span class='line'>1119</span>              * @ignore
<span class='line'>1120</span>              */</span><span class="WHIT">
<span class='line'>1121</span>             </span><span class="NAME">this.dequeue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">dequeue</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1122</span>                 </span><span class="COMM">// initialise the element to return to be undefined</span><span class="WHIT">
<span class='line'>1123</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">element</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1124</span> 
<span class='line'>1125</span>                 </span><span class="COMM">// check whether the queue is empty</span><span class="WHIT">
<span class='line'>1126</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">queue.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1127</span>                     </span><span class="COMM">// fetch the oldest element in the queue</span><span class="WHIT">
<span class='line'>1128</span>                     </span><span class="NAME">element</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">queue</span><span class="PUNC">[</span><span class="NAME">queueSpace</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1129</span> 
<span class='line'>1130</span>                     </span><span class="COMM">// update the amount of space and check whether a shift should occur</span><span class="WHIT">
<span class='line'>1131</span>                     </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">++</span><span class="NAME">queueSpace</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NAME">queue.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1132</span>                         </span><span class="COMM">// set the queue equal to the non-empty portion of the queue</span><span class="WHIT">
<span class='line'>1133</span>                         </span><span class="NAME">queue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">queue.slice</span><span class="PUNC">(</span><span class="NAME">queueSpace</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1134</span>                         </span><span class="COMM">// reset the amount of space at the front of the queue</span><span class="WHIT">
<span class='line'>1135</span>                         </span><span class="NAME">queueSpace</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1136</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1137</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1138</span>                 </span><span class="COMM">// return the removed element</span><span class="WHIT">
<span class='line'>1139</span>                 </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1140</span>                     </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">element</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1141</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">finally</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1142</span>                     </span><span class="NAME">element</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// IE 6 leak prevention</span><span class="WHIT">
<span class='line'>1143</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1144</span>             </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1145</span> 
<span class='line'>1146</span>             </span><span class="COMM">/** Returns the oldest element in this Queue. If this Queue is empty then
<span class='line'>1147</span>              * undefined is returned. This function returns the same value as the dequeue
<span class='line'>1148</span>              * function, but does not remove the returned element from this Queue.
<span class='line'>1149</span>              * @ignore
<span class='line'>1150</span>              */</span><span class="WHIT">
<span class='line'>1151</span>             </span><span class="NAME">this.getOldestElement</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">getOldestElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1152</span>                 </span><span class="COMM">// initialise the element to return to be undefined</span><span class="WHIT">
<span class='line'>1153</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">element</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1154</span> 
<span class='line'>1155</span>                 </span><span class="COMM">// if the queue is not element then fetch the oldest element in the queue</span><span class="WHIT">
<span class='line'>1156</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">queue.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1157</span>                     </span><span class="NAME">element</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">queue</span><span class="PUNC">[</span><span class="NAME">queueSpace</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1158</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1159</span>                 </span><span class="COMM">// return the oldest element</span><span class="WHIT">
<span class='line'>1160</span>                 </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1161</span>                     </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">element</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1162</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">finally</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1163</span>                     </span><span class="NAME">element</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">//IE 6 leak prevention</span><span class="WHIT">
<span class='line'>1164</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1165</span>             </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1166</span>         </span><span class="PUNC">}</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1167</span> 
<span class='line'>1168</span> 
<span class='line'>1169</span>         </span><span class="COMM">/**
<span class='line'>1170</span>          * AjaxEngine handles Ajax implementation details.
<span class='line'>1171</span>          * @ignore
<span class='line'>1172</span>          */</span><span class="WHIT">
<span class='line'>1173</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">AjaxEngine</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">AjaxEngine</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1174</span> 
<span class='line'>1175</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">                  </span><span class="COMM">// Request Object</span><span class="WHIT">
<span class='line'>1176</span>             </span><span class="NAME">req.url</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">                </span><span class="COMM">// Request URL</span><span class="WHIT">
<span class='line'>1177</span>             </span><span class="NAME">req.context</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">              </span><span class="COMM">// Context of request and response</span><span class="WHIT">
<span class='line'>1178</span>             </span><span class="NAME">req.context.sourceid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">   </span><span class="COMM">// Source of this request</span><span class="WHIT">
<span class='line'>1179</span>             </span><span class="NAME">req.context.onerror</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">    </span><span class="COMM">// Error handler for request</span><span class="WHIT">
<span class='line'>1180</span>             </span><span class="NAME">req.context.onevent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">    </span><span class="COMM">// Event handler for request</span><span class="WHIT">
<span class='line'>1181</span>             </span><span class="NAME">req.context.formid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">     </span><span class="COMM">// Form that's the context for this request</span><span class="WHIT">
<span class='line'>1182</span>             </span><span class="NAME">req.xmlReq</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">             </span><span class="COMM">// XMLHttpRequest Object</span><span class="WHIT">
<span class='line'>1183</span>             </span><span class="NAME">req.async</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">              </span><span class="COMM">// Default - Asynchronous</span><span class="WHIT">
<span class='line'>1184</span>             </span><span class="NAME">req.parameters</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">           </span><span class="COMM">// Parameters For GET or POST</span><span class="WHIT">
<span class='line'>1185</span>             </span><span class="NAME">req.queryString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">        </span><span class="COMM">// Encoded Data For GET or POST</span><span class="WHIT">
<span class='line'>1186</span>             </span><span class="NAME">req.method</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">             </span><span class="COMM">// GET or POST</span><span class="WHIT">
<span class='line'>1187</span>             </span><span class="NAME">req.status</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">             </span><span class="COMM">// Response Status Code From Server</span><span class="WHIT">
<span class='line'>1188</span>             </span><span class="NAME">req.fromQueue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">         </span><span class="COMM">// Indicates if the request was taken off the queue</span><span class="WHIT">
<span class='line'>1189</span>             </span><span class="COMM">// before being sent.  This prevents the request from</span><span class="WHIT">
<span class='line'>1190</span>             </span><span class="COMM">// entering the queue redundantly.</span><span class="WHIT">
<span class='line'>1191</span> 
<span class='line'>1192</span>             </span><span class="NAME">req.que</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Queue</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1193</span> 
<span class='line'>1194</span>             </span><span class="COMM">// Get an XMLHttpRequest Handle</span><span class="WHIT">
<span class='line'>1195</span>             </span><span class="NAME">req.xmlReq</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">getTransport</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1196</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">req.xmlReq</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1197</span>                 </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1198</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1199</span> 
<span class='line'>1200</span>             </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">noop</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1201</span>             
<span class='line'>1202</span>             </span><span class="COMM">// Set up request/response state callbacks</span><span class="WHIT">
<span class='line'>1203</span>             </span><span class="COMM">/**
<span class='line'>1204</span>              * @ignore
<span class='line'>1205</span>              */</span><span class="WHIT">
<span class='line'>1206</span>             </span><span class="NAME">req.xmlReq.onreadystatechange</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1207</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">req.xmlReq.readyState</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1208</span>                     </span><span class="NAME">req.onComplete</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1209</span>                     </span><span class="COMM">// next two lines prevent closure/ciruclar reference leaks</span><span class="WHIT">
<span class='line'>1210</span>                     </span><span class="COMM">// of XHR instances in IE</span><span class="WHIT">
<span class='line'>1211</span>                     </span><span class="NAME">req.xmlReq.onreadystatechange</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">noop</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1212</span>                     </span><span class="NAME">req.xmlReq</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1213</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1214</span>             </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1215</span> 
<span class='line'>1216</span>             </span><span class="COMM">/**
<span class='line'>1217</span>              * This function is called when the request/response interaction
<span class='line'>1218</span>              * is complete.  If the return status code is successfull,
<span class='line'>1219</span>              * dequeue all requests from the queue that have completed.  If a
<span class='line'>1220</span>              * request has been found on the queue that has not been sent,
<span class='line'>1221</span>              * send the request.
<span class='line'>1222</span>              * @ignore
<span class='line'>1223</span>              */</span><span class="WHIT">
<span class='line'>1224</span>             </span><span class="NAME">req.onComplete</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">onComplete</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1225</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">req.xmlReq.status</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">req.xmlReq.status</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">200</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">req.xmlReq.status</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">300</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1226</span>                     </span><span class="NAME">sendEvent</span><span class="PUNC">(</span><span class="NAME">req.xmlReq</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">req.context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"complete"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1227</span>                     </span><span class="NAME">jsf.ajax.response</span><span class="PUNC">(</span><span class="NAME">req.xmlReq</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">req.context</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1228</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1229</span>                     </span><span class="NAME">sendEvent</span><span class="PUNC">(</span><span class="NAME">req.xmlReq</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">req.context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"complete"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1230</span>                     </span><span class="NAME">sendError</span><span class="PUNC">(</span><span class="NAME">req.xmlReq</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">req.context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"httpError"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1231</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1232</span> 
<span class='line'>1233</span>                 </span><span class="COMM">// Regardless of whether the request completed successfully (or not),</span><span class="WHIT">
<span class='line'>1234</span>                 </span><span class="COMM">// dequeue requests that have been completed (readyState 4) and send</span><span class="WHIT">
<span class='line'>1235</span>                 </span><span class="COMM">// requests that ready to be sent (readyState 0).</span><span class="WHIT">
<span class='line'>1236</span> 
<span class='line'>1237</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nextReq</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">req.que.getOldestElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1238</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">nextReq</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">nextReq</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1239</span>                     </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1240</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1241</span>                 </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">nextReq.xmlReq</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">nextReq.xmlReq</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT">
<span class='line'>1242</span>                        </span><span class="NAME">nextReq.xmlReq.readyState</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1243</span>                     </span><span class="NAME">req.que.dequeue</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1244</span>                     </span><span class="NAME">nextReq</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">req.que.getOldestElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1245</span>                     </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">nextReq</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">nextReq</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1246</span>                         </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1247</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1248</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1249</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">nextReq</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">nextReq</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1250</span>                     </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1251</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1252</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">nextReq.xmlReq</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">nextReq.xmlReq</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT">
<span class='line'>1253</span>                     </span><span class="NAME">nextReq.xmlReq.readyState</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1254</span>                     </span><span class="NAME">nextReq.fromQueue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1255</span>                     </span><span class="NAME">nextReq.sendRequest</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1256</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1257</span>             </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1258</span> 
<span class='line'>1259</span>             </span><span class="COMM">/**
<span class='line'>1260</span>              * Utility method that accepts additional arguments for the AjaxEngine.
<span class='line'>1261</span>              * If an argument is passed in that matches an AjaxEngine property, the
<span class='line'>1262</span>              * argument value becomes the value of the AjaxEngine property.
<span class='line'>1263</span>              * Arguments that don't match AjaxEngine properties are added as
<span class='line'>1264</span>              * request parameters.
<span class='line'>1265</span>              * @ignore
<span class='line'>1266</span>              */</span><span class="WHIT">
<span class='line'>1267</span>             </span><span class="NAME">req.setupArguments</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">args</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1268</span>                 </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">args</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1269</span>                     </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">args.hasOwnProperty</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1270</span>                         </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">req</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1271</span>                             </span><span class="NAME">req.parameters</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">args</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1272</span>                         </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1273</span>                             </span><span class="NAME">req</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">args</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1274</span>                         </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1275</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1276</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1277</span>             </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1278</span> 
<span class='line'>1279</span>             </span><span class="COMM">/**
<span class='line'>1280</span>              * This function does final encoding of parameters, determines the request method
<span class='line'>1281</span>              * (GET or POST) and sends the request using the specified url.
<span class='line'>1282</span>              * @ignore
<span class='line'>1283</span>              */</span><span class="WHIT">
<span class='line'>1284</span>             </span><span class="NAME">req.sendRequest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1285</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">req.xmlReq</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1286</span>                     </span><span class="COMM">// if there is already a request on the queue waiting to be processed..</span><span class="WHIT">
<span class='line'>1287</span>                     </span><span class="COMM">// just queue this request</span><span class="WHIT">
<span class='line'>1288</span>                     </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">req.que.isEmpty</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1289</span>                         </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">req.fromQueue</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1290</span>                             </span><span class="NAME">req.que.enqueue</span><span class="PUNC">(</span><span class="NAME">req</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1291</span>                             </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1292</span>                         </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1293</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1294</span>                     </span><span class="COMM">// If the queue is empty, queue up this request and send</span><span class="WHIT">
<span class='line'>1295</span>                     </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">req.fromQueue</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1296</span>                         </span><span class="NAME">req.que.enqueue</span><span class="PUNC">(</span><span class="NAME">req</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1297</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1298</span>                     </span><span class="COMM">// Some logic to get the real request URL</span><span class="WHIT">
<span class='line'>1299</span>                     </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">req.generateUniqueUrl</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">req.method</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"GET"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1300</span>                         </span><span class="NAME">req.parameters</span><span class="PUNC">[</span><span class="STRN">"AjaxRequestUniqueId"</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getTime</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">""</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">req.requestIndex</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1301</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1302</span>                     </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">content</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// For POST requests, to hold query string</span><span class="WHIT">
<span class='line'>1303</span>                     </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">req.parameters</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1304</span>                         </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">req.parameters.hasOwnProperty</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1305</span>                             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">req.queryString.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1306</span>                                 </span><span class="NAME">req.queryString</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"&"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1307</span>                             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1308</span>                             </span><span class="NAME">req.queryString</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">encodeURIComponent</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">encodeURIComponent</span><span class="PUNC">(</span><span class="NAME">req.parameters</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1309</span>                         </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1310</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1311</span>                     </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">req.method</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"GET"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1312</span>                         </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">req.queryString.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1313</span>                             </span><span class="NAME">req.url</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">req.url.indexOf</span><span class="PUNC">(</span><span class="STRN">"?"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">"&"</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"?"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">req.queryString</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1314</span>                         </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1315</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1316</span>                     </span><span class="NAME">req.xmlReq.open</span><span class="PUNC">(</span><span class="NAME">req.method</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">req.url</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">req.async</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1317</span>                     </span><span class="COMM">// note that we are including the charset=UTF-8 as part of the content type (even</span><span class="WHIT">
<span class='line'>1318</span>                     </span><span class="COMM">// if encodeURIComponent encodes as UTF-8), because with some</span><span class="WHIT">
<span class='line'>1319</span>                     </span><span class="COMM">// browsers it will not be set in the request.  Some server implementations need to </span><span class="WHIT">
<span class='line'>1320</span>                     </span><span class="COMM">// determine the character encoding from the request header content type.</span><span class="WHIT">
<span class='line'>1321</span>                     </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">req.method</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"POST"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1322</span>                         </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">req.xmlReq.setRequestHeader</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1323</span>                             </span><span class="NAME">req.xmlReq.setRequestHeader</span><span class="PUNC">(</span><span class="STRN">'Faces-Request'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'partial/ajax'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1324</span>                             </span><span class="NAME">req.xmlReq.setRequestHeader</span><span class="PUNC">(</span><span class="STRN">'Content-type'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'application/x-www-form-urlencoded;charset=UTF-8'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1325</span>                         </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1326</span>                         </span><span class="NAME">content</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">req.queryString</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1327</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1328</span>                     </span><span class="COMM">// note that async == false is not a supported feature.  We may change it in ways</span><span class="WHIT">
<span class='line'>1329</span>                     </span><span class="COMM">// that break existing programs at any time, with no warning.</span><span class="WHIT">
<span class='line'>1330</span>                     </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">req.async</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1331</span>                         </span><span class="NAME">req.xmlReq.onreadystatechange</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// no need for readystate change listening</span><span class="WHIT">
<span class='line'>1332</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1333</span>                     </span><span class="NAME">sendEvent</span><span class="PUNC">(</span><span class="NAME">req.xmlReq</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">req.context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"begin"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1334</span>                     </span><span class="NAME">req.xmlReq.send</span><span class="PUNC">(</span><span class="NAME">content</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1335</span>                     </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">req.async</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1336</span>                         </span><span class="NAME">req.onComplete</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1337</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1338</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1339</span>             </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1340</span> 
<span class='line'>1341</span>             </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">req</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1342</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1343</span> 
<span class='line'>1344</span>         </span><span class="COMM">/**
<span class='line'>1345</span>          * Error handling callback.
<span class='line'>1346</span>          * Assumes that the request has completed.
<span class='line'>1347</span>          * @ignore
<span class='line'>1348</span>          */</span><span class="WHIT">
<span class='line'>1349</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sendError</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">sendError</span><span class="PUNC">(</span><span class="NAME">request</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">status</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">description</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">serverErrorName</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">serverErrorMessage</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1350</span> 
<span class='line'>1351</span>             </span><span class="COMM">// Possible errornames:</span><span class="WHIT">
<span class='line'>1352</span>             </span><span class="COMM">// httpError</span><span class="WHIT">
<span class='line'>1353</span>             </span><span class="COMM">// emptyResponse</span><span class="WHIT">
<span class='line'>1354</span>             </span><span class="COMM">// serverError</span><span class="WHIT">
<span class='line'>1355</span>             </span><span class="COMM">// malformedXML</span><span class="WHIT">
<span class='line'>1356</span> 
<span class='line'>1357</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1358</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">  </span><span class="COMM">// data payload for function</span><span class="WHIT">
<span class='line'>1359</span>             </span><span class="NAME">data.type</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"error"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1360</span>             </span><span class="NAME">data.status</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">status</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1361</span>             </span><span class="NAME">data.source</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">context.sourceid</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1362</span>             </span><span class="NAME">data.responseCode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">request.status</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1363</span>             </span><span class="NAME">data.responseXML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">request.responseXML</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1364</span>             </span><span class="NAME">data.responseText</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">request.responseText</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1365</span> 
<span class='line'>1366</span>             </span><span class="COMM">// ensure data source is the dom element and not the ID</span><span class="WHIT">
<span class='line'>1367</span>             </span><span class="COMM">// per 14.4.1 of the 2.0 specification.</span><span class="WHIT">
<span class='line'>1368</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">data.source</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'string'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1369</span>                 </span><span class="NAME">data.source</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.getElementById</span><span class="PUNC">(</span><span class="NAME">data.source</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1370</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1371</span> 
<span class='line'>1372</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">description</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1373</span>                 </span><span class="NAME">data.description</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">description</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1374</span>             </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">status</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"httpError"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1375</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">data.responseCode</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1376</span>                     </span><span class="NAME">data.description</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"The Http Transport returned a 0 status code.  This is usually the result of mixing ajax and full requests.  This is usually undesired, for both performance and data integrity reasons."</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1377</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1378</span>                     </span><span class="NAME">data.description</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"There was an error communicating with the server, status: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">data.responseCode</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1379</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1380</span>             </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">status</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"serverError"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1381</span>                 </span><span class="NAME">data.description</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">serverErrorMessage</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1382</span>             </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">status</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"emptyResponse"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1383</span>                 </span><span class="NAME">data.description</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"An empty response was received from the server.  Check server error logs."</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1384</span>             </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">status</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"malformedXML"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1385</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">getParseErrorText</span><span class="PUNC">(</span><span class="NAME">data.responseXML</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">PARSED_OK</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1386</span>                     </span><span class="NAME">data.description</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">getParseErrorText</span><span class="PUNC">(</span><span class="NAME">data.responseXML</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1387</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1388</span>                     </span><span class="NAME">data.description</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"An invalid XML response was received from the server."</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1389</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1390</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1391</span> 
<span class='line'>1392</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">status</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"serverError"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1393</span>                 </span><span class="NAME">data.errorName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">serverErrorName</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1394</span>                 </span><span class="NAME">data.errorMessage</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">serverErrorMessage</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1395</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1396</span> 
<span class='line'>1397</span>             </span><span class="COMM">// If we have a registered callback, send the error to it.</span><span class="WHIT">
<span class='line'>1398</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">context.onerror</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1399</span>                 </span><span class="NAME">context.onerror.call</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1400</span>                 </span><span class="NAME">sent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1401</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1402</span> 
<span class='line'>1403</span>             </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">errorListeners</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1404</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">errorListeners.hasOwnProperty</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1405</span>                     </span><span class="NAME">errorListeners</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">call</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1406</span>                     </span><span class="NAME">sent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1407</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1408</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1409</span> 
<span class='line'>1410</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">sent</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">jsf.getProjectStage</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"Development"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1411</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">status</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"serverError"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1412</span>                     </span><span class="NAME">alert</span><span class="PUNC">(</span><span class="STRN">"serverError: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">serverErrorName</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">serverErrorMessage</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1413</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1414</span>                     </span><span class="NAME">alert</span><span class="PUNC">(</span><span class="NAME">status</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">": "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">data.description</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1415</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1416</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1417</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1418</span> 
<span class='line'>1419</span>         </span><span class="COMM">/**
<span class='line'>1420</span>          * Event handling callback.
<span class='line'>1421</span>          * Request is assumed to have completed, except in the case of event = 'begin'.
<span class='line'>1422</span>          * @ignore
<span class='line'>1423</span>          */</span><span class="WHIT">
<span class='line'>1424</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sendEvent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">sendEvent</span><span class="PUNC">(</span><span class="NAME">request</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">status</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1425</span> 
<span class='line'>1426</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1427</span>             </span><span class="NAME">data.type</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"event"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1428</span>             </span><span class="NAME">data.status</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">status</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1429</span>             </span><span class="NAME">data.source</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">context.sourceid</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1430</span>             </span><span class="COMM">// ensure data source is the dom element and not the ID</span><span class="WHIT">
<span class='line'>1431</span>             </span><span class="COMM">// per 14.4.1 of the 2.0 specification.</span><span class="WHIT">
<span class='line'>1432</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">data.source</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'string'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1433</span>                 </span><span class="NAME">data.source</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.getElementById</span><span class="PUNC">(</span><span class="NAME">data.source</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1434</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1435</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">status</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">'begin'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1436</span>                 </span><span class="NAME">data.responseCode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">request.status</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1437</span>                 </span><span class="NAME">data.responseXML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">request.responseXML</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1438</span>                 </span><span class="NAME">data.responseText</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">request.responseText</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1439</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1440</span> 
<span class='line'>1441</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">context.onevent</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1442</span>                 </span><span class="NAME">context.onevent.call</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1443</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1444</span> 
<span class='line'>1445</span>             </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">eventListeners</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1446</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">eventListeners.hasOwnProperty</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1447</span>                     </span><span class="NAME">eventListeners</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">call</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1448</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1449</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1450</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1451</span> 
<span class='line'>1452</span>         </span><span class="COMM">// Use module pattern to return the functions we actually expose</span><span class="WHIT">
<span class='line'>1453</span>         </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1454</span>             </span><span class="COMM">/**
<span class='line'>1455</span>              * Register a callback for error handling.
<span class='line'>1456</span>              * &lt;p>&lt;b>Usage:&lt;/b>&lt;/p>
<span class='line'>1457</span>              * &lt;pre>&lt;code>
<span class='line'>1458</span>              * jsf.ajax.addOnError(handleError);
<span class='line'>1459</span>              * ...
<span class='line'>1460</span>              * var handleError = function handleError(data) {
<span class='line'>1461</span>              * ...
<span class='line'>1462</span>              * }
<span class='line'>1463</span>              * &lt;/pre>&lt;/code>
<span class='line'>1464</span>              * &lt;p>&lt;b>Implementation Requirements:&lt;/b>&lt;/p>
<span class='line'>1465</span>              * This function must accept a reference to an existing JavaScript function.
<span class='line'>1466</span>              * The JavaScript function reference must be added to a list of callbacks, making it possible
<span class='line'>1467</span>              * to register more than one callback by invoking &lt;code>jsf.ajax.addOnError&lt;/code>
<span class='line'>1468</span>              * more than once.  This function must throw an error if the &lt;code>callback&lt;/code>
<span class='line'>1469</span>              * argument is not a function.
<span class='line'>1470</span>              *
<span class='line'>1471</span>              * @member jsf.ajax
<span class='line'>1472</span>              * @param callback a reference to a function to call on an error
<span class='line'>1473</span>              */</span><span class="WHIT">
<span class='line'>1474</span>             </span><span class="NAME">addOnError</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">addOnError</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1475</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1476</span>                     </span><span class="NAME">errorListeners</span><span class="PUNC">[</span><span class="NAME">errorListeners.length</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1477</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1478</span>                     </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"jsf.ajax.addOnError:  Added a callback that was not a function."</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1479</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1480</span>             </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1481</span>             </span><span class="COMM">/**
<span class='line'>1482</span>              * Register a callback for event handling.
<span class='line'>1483</span>              * &lt;p>&lt;b>Usage:&lt;/b>&lt;/p>
<span class='line'>1484</span>              * &lt;pre>&lt;code>
<span class='line'>1485</span>              * jsf.ajax.addOnEvent(statusUpdate);
<span class='line'>1486</span>              * ...
<span class='line'>1487</span>              * var statusUpdate = function statusUpdate(data) {
<span class='line'>1488</span>              * ...
<span class='line'>1489</span>              * }
<span class='line'>1490</span>              * &lt;/pre>&lt;/code>
<span class='line'>1491</span>              * &lt;p>&lt;b>Implementation Requirements:&lt;/b>&lt;/p>
<span class='line'>1492</span>              * This function must accept a reference to an existing JavaScript function.
<span class='line'>1493</span>              * The JavaScript function reference must be added to a list of callbacks, making it possible
<span class='line'>1494</span>              * to register more than one callback by invoking &lt;code>jsf.ajax.addOnEvent&lt;/code>
<span class='line'>1495</span>              * more than once.  This function must throw an error if the &lt;code>callback&lt;/code>
<span class='line'>1496</span>              * argument is not a function.
<span class='line'>1497</span>              *
<span class='line'>1498</span>              * @member jsf.ajax
<span class='line'>1499</span>              * @param callback a reference to a function to call on an event
<span class='line'>1500</span>              */</span><span class="WHIT">
<span class='line'>1501</span>             </span><span class="NAME">addOnEvent</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">addOnEvent</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1502</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1503</span>                     </span><span class="NAME">eventListeners</span><span class="PUNC">[</span><span class="NAME">eventListeners.length</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1504</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1505</span>                     </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"jsf.ajax.addOnEvent: Added a callback that was not a function"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1506</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1507</span>             </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1508</span>             </span><span class="COMM">/**
<span class='line'>1509</span>              * &lt;p>Send an asynchronous Ajax request to the server.
<span class='line'>1510</span>              * &lt;p>&lt;b>Usage:&lt;/b>&lt;/p>
<span class='line'>1511</span>              * &lt;pre>&lt;code>
<span class='line'>1512</span>              * Example showing all optional arguments:
<span class='line'>1513</span>              *
<span class='line'>1514</span>              * &lt;commandButton id="button1" value="submit"
<span class='line'>1515</span>              *     onclick="jsf.ajax.request(this,event,
<span class='line'>1516</span>              *       {execute:'button1',render:'status',onevent: handleEvent,onerror: handleError});return false;"/&gt;
<span class='line'>1517</span>              * &lt;/commandButton/&gt;
<span class='line'>1518</span>              * &lt;/pre>&lt;/code>
<span class='line'>1519</span>              * &lt;p>&lt;b>Implementation Requirements:&lt;/b>&lt;/p>
<span class='line'>1520</span>              * This function must:
<span class='line'>1521</span>              * &lt;ul>
<span class='line'>1522</span>              * &lt;li>Be used within the context of a &lt;code>form&lt;/code>.&lt;/li>
<span class='line'>1523</span>              * &lt;li>Capture the element that triggered this Ajax request
<span class='line'>1524</span>              * (from the &lt;code>source&lt;/code> argument, also known as the
<span class='line'>1525</span>              * &lt;code>source&lt;/code> element.&lt;/li>
<span class='line'>1526</span>              * &lt;li>If the &lt;code>source&lt;/code> element is &lt;code>null&lt;/code> or
<span class='line'>1527</span>              * &lt;code>undefined&lt;/code> throw an error.&lt;/li>
<span class='line'>1528</span>              * &lt;li>If the &lt;code>source&lt;/code> argument is not a &lt;code>string&lt;/code> or
<span class='line'>1529</span>              * DOM element object, throw an error.&lt;/li>
<span class='line'>1530</span>              * &lt;li>If the &lt;code>source&lt;/code> argument is a &lt;code>string&lt;/code>, find the
<span class='line'>1531</span>              * DOM element for that &lt;code>string&lt;/code> identifier.
<span class='line'>1532</span>              * &lt;li>If the DOM element could not be determined, throw an error.&lt;/li>
<span class='line'>1533</span>              * &lt;li>If the &lt;code>onerror&lt;/code> and &lt;code>onevent&lt;/code> arguments are set,
<span class='line'>1534</span>              * they must be functions, or throw an error.
<span class='line'>1535</span>              * &lt;li>Determine the &lt;code>source&lt;/code> element's &lt;code>form&lt;/code>
<span class='line'>1536</span>              * element.&lt;/li>
<span class='line'>1537</span>              * &lt;li>Get the &lt;code>form&lt;/code> view state by calling
<span class='line'>1538</span>              * {@link jsf.getViewState} passing the
<span class='line'>1539</span>              * &lt;code>form&lt;/code> element as the argument.&lt;/li>
<span class='line'>1540</span>              * &lt;li>Collect post data arguments for the Ajax request.
<span class='line'>1541</span>              * &lt;ul>
<span class='line'>1542</span>              * &lt;li>The following name/value pairs are required post data arguments:
<span class='line'>1543</span>              * &lt;table border="1">
<span class='line'>1544</span>              * &lt;tr>
<span class='line'>1545</span>              * &lt;th>name&lt;/th>
<span class='line'>1546</span>              * &lt;th>value&lt;/th>
<span class='line'>1547</span>              * &lt;/tr>
<span class='line'>1548</span>              * &lt;tr>
<span class='line'>1549</span>              * &lt;td>&lt;code>javax.faces.ViewState&lt;/code>&lt;/td>
<span class='line'>1550</span>              * &lt;td>&lt;code>Contents of javax.faces.ViewState hidden field.  This is included when
<span class='line'>1551</span>              * {@link jsf.getViewState} is used.&lt;/code>&lt;/td>
<span class='line'>1552</span>              * &lt;/tr>
<span class='line'>1553</span>              * &lt;tr>
<span class='line'>1554</span>              * &lt;td>&lt;code>javax.faces.partial.ajax&lt;/code>&lt;/td>
<span class='line'>1555</span>              * &lt;td>&lt;code>true&lt;/code>&lt;/td>
<span class='line'>1556</span>              * &lt;/tr>
<span class='line'>1557</span>              * &lt;tr>
<span class='line'>1558</span>              * &lt;td>&lt;code>javax.faces.source&lt;/code>&lt;/td>
<span class='line'>1559</span>              * &lt;td>&lt;code>The identifier of the element that triggered this request.&lt;/code>&lt;/td>
<span class='line'>1560</span>              * &lt;/tr>
<span class='line'>1561</span>              * &lt;/table>
<span class='line'>1562</span>              * &lt;/li>
<span class='line'>1563</span>              * &lt;/ul>
<span class='line'>1564</span>              * &lt;/li>
<span class='line'>1565</span>              * &lt;li>Collect optional post data arguments for the Ajax request.
<span class='line'>1566</span>              * &lt;ul>
<span class='line'>1567</span>              * &lt;li>Determine additional arguments (if any) from the &lt;code>options&lt;/code>
<span class='line'>1568</span>              * argument. If &lt;code>options.execute&lt;/code> exists:
<span class='line'>1569</span>              * &lt;ul>
<span class='line'>1570</span>              * &lt;li>If the keyword &lt;code>@none&lt;/code> is present, do not create and send
<span class='line'>1571</span>              * the post data argument &lt;code>javax.faces.partial.execute&lt;/code>.&lt;/li>
<span class='line'>1572</span>              * &lt;li>If the keyword &lt;code>@all&lt;/code> is present, create the post data argument with
<span class='line'>1573</span>              * the name &lt;code>javax.faces.partial.execute&lt;/code> and the value &lt;code>@all&lt;/code>.&lt;/li>
<span class='line'>1574</span>              * &lt;li>Otherwise, there are specific identifiers that need to be sent.  Create the post
<span class='line'>1575</span>              * data argument with the name &lt;code>javax.faces.partial.execute&lt;/code> and the value as a
<span class='line'>1576</span>              * space delimited &lt;code>string&lt;/code> of client identifiers.&lt;/li>
<span class='line'>1577</span>              * &lt;/ul>
<span class='line'>1578</span>              * &lt;/li>
<span class='line'>1579</span>              * &lt;li>If &lt;code>options.execute&lt;/code> does not exist, create the post data argument with the
<span class='line'>1580</span>              * name &lt;code>javax.faces.partial.execute&lt;/code> and the value as the identifier of the
<span class='line'>1581</span>              * element that caused this request.&lt;/li>
<span class='line'>1582</span>              * &lt;li>If &lt;code>options.render&lt;/code> exists:
<span class='line'>1583</span>              * &lt;ul>
<span class='line'>1584</span>              * &lt;li>If the keyword &lt;code>@none&lt;/code> is present, do not create and send
<span class='line'>1585</span>              * the post data argument &lt;code>javax.faces.partial.render&lt;/code>.&lt;/li>
<span class='line'>1586</span>              * &lt;li>If the keyword &lt;code>@all&lt;/code> is present, create the post data argument with
<span class='line'>1587</span>              * the name &lt;code>javax.faces.partial.render&lt;/code> and the value &lt;code>@all&lt;/code>.&lt;/li>
<span class='line'>1588</span>              * &lt;li>Otherwise, there are specific identifiers that need to be sent.  Create the post
<span class='line'>1589</span>              * data argument with the name &lt;code>javax.faces.partial.render&lt;/code> and the value as a
<span class='line'>1590</span>              * space delimited &lt;code>string&lt;/code> of client identifiers.&lt;/li>
<span class='line'>1591</span>              * &lt;/ul>
<span class='line'>1592</span>              * &lt;li>If &lt;code>options.render&lt;/code> does not exist do not create and send the
<span class='line'>1593</span>              * post data argument &lt;code>javax.faces.partial.render&lt;/code>.&lt;/li>
<span class='line'>1594</span>              * &lt;li>Determine additional arguments (if any) from the &lt;code>event&lt;/code>
<span class='line'>1595</span>              * argument.  The following name/value pairs may be used from the
<span class='line'>1596</span>              * &lt;code>event&lt;/code> object:
<span class='line'>1597</span>              * &lt;ul>
<span class='line'>1598</span>              * &lt;li>&lt;code>target&lt;/code> - the ID of the element that triggered the event.&lt;/li>
<span class='line'>1599</span>              * &lt;li>&lt;code>captured&lt;/code> - the ID of the element that captured the event.&lt;/li>
<span class='line'>1600</span>              * &lt;li>&lt;code>type&lt;/code> - the type of event (ex: onkeypress)&lt;/li>
<span class='line'>1601</span>              * &lt;li>&lt;code>alt&lt;/code> - &lt;code>true&lt;/code> if ALT key was pressed.&lt;/li>
<span class='line'>1602</span>              * &lt;li>&lt;code>ctrl&lt;/code> - &lt;code>true&lt;/code> if CTRL key was pressed.&lt;/li>
<span class='line'>1603</span>              * &lt;li>&lt;code>shift&lt;/code> - &lt;code>true&lt;/code> if SHIFT key was pressed. &lt;/li>
<span class='line'>1604</span>              * &lt;li>&lt;code>meta&lt;/code> - &lt;code>true&lt;/code> if META key was pressed. &lt;/li>
<span class='line'>1605</span>              * &lt;li>&lt;code>right&lt;/code> - &lt;code>true&lt;/code> if right mouse button
<span class='line'>1606</span>              * was pressed. &lt;/li>
<span class='line'>1607</span>              * &lt;li>&lt;code>left&lt;/code> - &lt;code>true&lt;/code> if left mouse button
<span class='line'>1608</span>              * was pressed. &lt;/li>
<span class='line'>1609</span>              * &lt;li>&lt;code>keycode&lt;/code> - the key code.
<span class='line'>1610</span>              * &lt;/ul>
<span class='line'>1611</span>              * &lt;/li>
<span class='line'>1612</span>              * &lt;/ul>
<span class='line'>1613</span>              * &lt;/li>
<span class='line'>1614</span>              * &lt;li>Encode the set of post data arguments.&lt;/li>
<span class='line'>1615</span>              * &lt;li>Join the encoded view state with the encoded set of post data arguments
<span class='line'>1616</span>              * to form the &lt;code>query string&lt;/code> that will be sent to the server.&lt;/li>
<span class='line'>1617</span>              * &lt;li>Create a request &lt;code>context&lt;/code> object and set the properties:
<span class='line'>1618</span>              * &lt;ul>&lt;li>&lt;code>source&lt;/code> (the source DOM element for this request)&lt;/li>
<span class='line'>1619</span>              * &lt;li>&lt;code>onerror&lt;/code> (the error handler for this request)&lt;/li>
<span class='line'>1620</span>              * &lt;li>&lt;code>onevent&lt;/code> (the event handler for this request)&lt;/li>&lt;/ul>
<span class='line'>1621</span>              * The request context will be used during error/event handling.&lt;/li>
<span class='line'>1622</span>              * &lt;li>Send a &lt;code>begin&lt;/code> event following the procedure as outlined
<span class='line'>1623</span>              * in the Chapter 13 "Sending Events" section of the spec prose document &lt;a
<span class='line'>1624</span>              *  href="../../javadocs/overview-summary.html#prose_document">linked in the
<span class='line'>1625</span>              *  overview summary&lt;/a>&lt;/li>
<span class='line'>1626</span>              * &lt;li>Set the request header with the name: &lt;code>Faces-Request&lt;/code> and the
<span class='line'>1627</span>              * value: &lt;code>partial/ajax&lt;/code>.&lt;/li>
<span class='line'>1628</span>              * &lt;li>Determine the &lt;code>posting URL&lt;/code> as follows: If the hidden field
<span class='line'>1629</span>              * &lt;code>javax.faces.encodedURL&lt;/code> is present in the submitting form, use its
<span class='line'>1630</span>              * value as the &lt;code>posting URL&lt;/code>.  Otherwise, use the &lt;code>action&lt;/code>
<span class='line'>1631</span>              * property of the &lt;code>form&lt;/code> element as the &lt;code>URL&lt;/code>.&lt;/li>
<span class='line'>1632</span>              * &lt;li>Send the request as an &lt;code>asynchronous POST&lt;/code> using the
<span class='line'>1633</span>              * &lt;code>posting URL&lt;/code> that was determined in the previous step.&lt;/li>
<span class='line'>1634</span>              * &lt;/ul>
<span class='line'>1635</span>              * Form serialization should occur just before the request is sent to minimize 
<span class='line'>1636</span>              * the amount of time between the creation of the serialized form data and the 
<span class='line'>1637</span>              * sending of the serialized form data (in the case of long requests in the queue).
<span class='line'>1638</span>              * Before the request is sent it must be put into a queue to ensure requests
<span class='line'>1639</span>              * are sent in the same order as when they were initiated.  The request callback function
<span class='line'>1640</span>              * must examine the queue and determine the next request to be sent.  The behavior of the
<span class='line'>1641</span>              * request callback function must be as follows:
<span class='line'>1642</span>              * &lt;ul>
<span class='line'>1643</span>              * &lt;li>If the request completed successfully invoke {@link jsf.ajax.response}
<span class='line'>1644</span>              * passing the &lt;code>request&lt;/code> object.&lt;/li>
<span class='line'>1645</span>              * &lt;li>If the request did not complete successfully, notify the client.&lt;/li>
<span class='line'>1646</span>              * &lt;li>Regardless of the outcome of the request (success or error) every request in the
<span class='line'>1647</span>              * queue must be handled.  Examine the status of each request in the queue starting from
<span class='line'>1648</span>              * the request that has been in the queue the longest.  If the status of the request is
<span class='line'>1649</span>              * &lt;code>complete&lt;/code> (readyState 4), dequeue the request (remove it from the queue).
<span class='line'>1650</span>              * If the request has not been sent (readyState 0), send the request.  Requests that are
<span class='line'>1651</span>              * taken off the queue and sent should not be put back on the queue.&lt;/li>
<span class='line'>1652</span>              * &lt;/ul>
<span class='line'>1653</span>              *
<span class='line'>1654</span>              * &lt;/p>
<span class='line'>1655</span>              *
<span class='line'>1656</span>              * @param source The DOM element that triggered this Ajax request, or an id string of the
<span class='line'>1657</span>              * element to use as the triggering element.
<span class='line'>1658</span>              * @param event The DOM event that triggered this Ajax request.  The
<span class='line'>1659</span>              * &lt;code>event&lt;/code> argument is optional.
<span class='line'>1660</span>              * @param options The set of available options that can be sent as
<span class='line'>1661</span>              * request parameters to control client and/or server side
<span class='line'>1662</span>              * request processing. Acceptable name/value pair options are:
<span class='line'>1663</span>              * &lt;table border="1">
<span class='line'>1664</span>              * &lt;tr>
<span class='line'>1665</span>              * &lt;th>name&lt;/th>
<span class='line'>1666</span>              * &lt;th>value&lt;/th>
<span class='line'>1667</span>              * &lt;/tr>
<span class='line'>1668</span>              * &lt;tr>
<span class='line'>1669</span>              * &lt;td>&lt;code>execute&lt;/code>&lt;/td>
<span class='line'>1670</span>              * &lt;td>&lt;code>space seperated list of client identifiers&lt;/code>&lt;/td>
<span class='line'>1671</span>              * &lt;/tr>
<span class='line'>1672</span>              * &lt;tr>
<span class='line'>1673</span>              * &lt;td>&lt;code>render&lt;/code>&lt;/td>
<span class='line'>1674</span>              * &lt;td>&lt;code>space seperated list of client identifiers&lt;/code>&lt;/td>
<span class='line'>1675</span>              * &lt;/tr>
<span class='line'>1676</span>              * &lt;tr>
<span class='line'>1677</span>              * &lt;td>&lt;code>onevent&lt;/code>&lt;/td>
<span class='line'>1678</span>              * &lt;td>&lt;code>function to callback for event&lt;/code>&lt;/td>
<span class='line'>1679</span>              * &lt;/tr>
<span class='line'>1680</span>              * &lt;tr>
<span class='line'>1681</span>              * &lt;td>&lt;code>onerror&lt;/code>&lt;/td>
<span class='line'>1682</span>              * &lt;td>&lt;code>function to callback for error&lt;/code>&lt;/td>
<span class='line'>1683</span>              * &lt;/tr>
<span class='line'>1684</span>              * &lt;tr>
<span class='line'>1685</span>              * &lt;td>&lt;code>params&lt;/code>&lt;/td>
<span class='line'>1686</span>              * &lt;td>&lt;code>object containing parameters to include in the request&lt;/code>&lt;/td>
<span class='line'>1687</span>              * &lt;/tr>
<span class='line'>1688</span>              * &lt;/table>
<span class='line'>1689</span>              * The &lt;code>options&lt;/code> argument is optional.
<span class='line'>1690</span>              * @member jsf.ajax
<span class='line'>1691</span>              * @function jsf.ajax.request
<span class='line'>1692</span>              * @throws Error if first required argument &lt;code>element&lt;/code> is not specified
<span class='line'>1693</span>              */</span><span class="WHIT">
<span class='line'>1694</span>             </span><span class="NAME">request</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">request</span><span class="PUNC">(</span><span class="NAME">source</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">event</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1695</span> 
<span class='line'>1696</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">element</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">form</span><span class="PUNC">;</span><span class="WHIT">   </span><span class="COMM">//  Element variables</span><span class="WHIT">
<span class='line'>1697</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">all</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">none</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1698</span> 
<span class='line'>1699</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">source</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">source</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1700</span>                     </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"jsf.ajax.request: source not set"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1701</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1702</span> 
<span class='line'>1703</span>                 </span><span class="COMM">// set up the element based on source</span><span class="WHIT">
<span class='line'>1704</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">source</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'string'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1705</span>                     </span><span class="NAME">element</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.getElementById</span><span class="PUNC">(</span><span class="NAME">source</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1706</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">source</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'object'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1707</span>                     </span><span class="NAME">element</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">source</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1708</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1709</span>                     </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"jsf.request: source must be object or string"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1710</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1711</span>                 </span><span class="COMM">// attempt to handle case of name unset</span><span class="WHIT">
<span class='line'>1712</span>                 </span><span class="COMM">// this might be true in a badly written composite component</span><span class="WHIT">
<span class='line'>1713</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">element.name</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1714</span>                     </span><span class="NAME">element.name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">element.id</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1715</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1716</span> 
<span class='line'>1717</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1718</span>                     </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1719</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1720</span> 
<span class='line'>1721</span>                 </span><span class="COMM">// Error handler for this request</span><span class="WHIT">
<span class='line'>1722</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">onerror</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1723</span> 
<span class='line'>1724</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">options.onerror</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">options.onerror</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1725</span>                     </span><span class="NAME">onerror</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.onerror</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1726</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">options.onerror</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">options.onerror</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1727</span>                     </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"jsf.ajax.request: Added an onerror callback that was not a function"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1728</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1729</span> 
<span class='line'>1730</span>                 </span><span class="COMM">// Event handler for this request</span><span class="WHIT">
<span class='line'>1731</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">onevent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1732</span> 
<span class='line'>1733</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">options.onevent</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">options.onevent</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1734</span>                     </span><span class="NAME">onevent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.onevent</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1735</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">options.onevent</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">options.onevent</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1736</span>                     </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"jsf.ajax.request: Added an onevent callback that was not a function"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1737</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1738</span> 
<span class='line'>1739</span>                 </span><span class="NAME">form</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">getForm</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1740</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">form</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1741</span>                     </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"jsf.ajax.request: Method must be called within a form"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1742</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1743</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">viewState</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">jsf.getViewState</span><span class="PUNC">(</span><span class="NAME">form</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1744</span> 
<span class='line'>1745</span>                 </span><span class="COMM">// Set up additional arguments to be used in the request..</span><span class="WHIT">
<span class='line'>1746</span>                 </span><span class="COMM">// Make sure "javax.faces.source" is set up.</span><span class="WHIT">
<span class='line'>1747</span>                 </span><span class="COMM">// If there were "execute" ids specified, make sure we</span><span class="WHIT">
<span class='line'>1748</span>                 </span><span class="COMM">// include the identifier of the source element in the</span><span class="WHIT">
<span class='line'>1749</span>                 </span><span class="COMM">// "execute" list.  If there were no "execute" ids</span><span class="WHIT">
<span class='line'>1750</span>                 </span><span class="COMM">// specified, determine the default.</span><span class="WHIT">
<span class='line'>1751</span> 
<span class='line'>1752</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1753</span> 
<span class='line'>1754</span>                 </span><span class="NAME">args</span><span class="PUNC">[</span><span class="STRN">"javax.faces.source"</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">element.id</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1755</span> 
<span class='line'>1756</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">event</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">!</span><span class="NAME">event.type</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1757</span>                     </span><span class="NAME">args</span><span class="PUNC">[</span><span class="STRN">"javax.faces.partial.event"</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">event.type</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1758</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1759</span> 
<span class='line'>1760</span>                 </span><span class="COMM">// If we have 'execute' identifiers:</span><span class="WHIT">
<span class='line'>1761</span>                 </span><span class="COMM">// Handle any keywords that may be present.</span><span class="WHIT">
<span class='line'>1762</span>                 </span><span class="COMM">// If @none present anywhere, do not send the</span><span class="WHIT">
<span class='line'>1763</span>                 </span><span class="COMM">// "javax.faces.partial.execute" parameter.</span><span class="WHIT">
<span class='line'>1764</span>                 </span><span class="COMM">// The 'execute' and 'render' lists must be space</span><span class="WHIT">
<span class='line'>1765</span>                 </span><span class="COMM">// delimited.</span><span class="WHIT">
<span class='line'>1766</span> 
<span class='line'>1767</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">options.execute</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1768</span>                     </span><span class="NAME">none</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.execute.search</span><span class="PUNC">(</span><span class="REGX">/@none/</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1769</span>                     </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">none</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1770</span>                         </span><span class="NAME">all</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.execute.search</span><span class="PUNC">(</span><span class="REGX">/@all/</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1771</span>                         </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">all</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1772</span>                             </span><span class="NAME">options.execute</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.execute.replace</span><span class="PUNC">(</span><span class="STRN">"@this"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">element.id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1773</span>                             </span><span class="NAME">options.execute</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.execute.replace</span><span class="PUNC">(</span><span class="STRN">"@form"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">form.id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1774</span>                             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">temp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.execute.split</span><span class="PUNC">(</span><span class="STRN">' '</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1775</span>                             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">isInArray</span><span class="PUNC">(</span><span class="NAME">temp</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">element.name</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1776</span>                                 </span><span class="NAME">options.execute</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">element.name</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">options.execute</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1777</span>                             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1778</span>                         </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1779</span>                             </span><span class="NAME">options.execute</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"@all"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1780</span>                         </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1781</span>                         </span><span class="NAME">args</span><span class="PUNC">[</span><span class="STRN">"javax.faces.partial.execute"</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.execute</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1782</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1783</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1784</span>                     </span><span class="NAME">options.execute</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">element.name</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">element.id</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1785</span>                     </span><span class="NAME">args</span><span class="PUNC">[</span><span class="STRN">"javax.faces.partial.execute"</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.execute</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1786</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1787</span> 
<span class='line'>1788</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">options.render</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1789</span>                     </span><span class="NAME">none</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.render.search</span><span class="PUNC">(</span><span class="REGX">/@none/</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1790</span>                     </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">none</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1791</span>                         </span><span class="NAME">all</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.render.search</span><span class="PUNC">(</span><span class="REGX">/@all/</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1792</span>                         </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">all</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1793</span>                             </span><span class="NAME">options.render</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.render.replace</span><span class="PUNC">(</span><span class="STRN">"@this"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">element.id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1794</span>                             </span><span class="NAME">options.render</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.render.replace</span><span class="PUNC">(</span><span class="STRN">"@form"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">form.id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1795</span>                         </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1796</span>                             </span><span class="NAME">options.render</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"@all"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1797</span>                         </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1798</span>                         </span><span class="NAME">args</span><span class="PUNC">[</span><span class="STRN">"javax.faces.partial.render"</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.render</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1799</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1800</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1801</span> 
<span class='line'>1802</span>                 </span><span class="COMM">// remove non-passthrough options</span><span class="WHIT">
<span class='line'>1803</span>                 </span><span class="KEYW">delete</span><span class="WHIT"> </span><span class="NAME">options.execute</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1804</span>                 </span><span class="KEYW">delete</span><span class="WHIT"> </span><span class="NAME">options.render</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1805</span>                 </span><span class="KEYW">delete</span><span class="WHIT"> </span><span class="NAME">options.onerror</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1806</span>                 </span><span class="KEYW">delete</span><span class="WHIT"> </span><span class="NAME">options.onevent</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1807</span>                 </span><span class="COMM">// copy all other options to args</span><span class="WHIT">
<span class='line'>1808</span>                 </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">property</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1809</span>                     </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">options.hasOwnProperty</span><span class="PUNC">(</span><span class="NAME">property</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1810</span>                         </span><span class="NAME">args</span><span class="PUNC">[</span><span class="NAME">property</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">[</span><span class="NAME">property</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1811</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1812</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1813</span> 
<span class='line'>1814</span>                 </span><span class="NAME">args</span><span class="PUNC">[</span><span class="STRN">"javax.faces.partial.ajax"</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"true"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1815</span>                 </span><span class="NAME">args</span><span class="PUNC">[</span><span class="STRN">"method"</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"POST"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1816</span> 
<span class='line'>1817</span>                 </span><span class="COMM">// Determine the posting url</span><span class="WHIT">
<span class='line'>1818</span> 
<span class='line'>1819</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">encodedUrlField</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">form.elements</span><span class="PUNC">[</span><span class="STRN">"javax.faces.encodedURL"</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1820</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">encodedUrlField</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1821</span>                     </span><span class="NAME">args</span><span class="PUNC">[</span><span class="STRN">"url"</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">form.action</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1822</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1823</span>                     </span><span class="NAME">args</span><span class="PUNC">[</span><span class="STRN">"url"</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">encodedUrlField.value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1824</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1825</span> 
<span class='line'>1826</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ajaxEngine</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">AjaxEngine</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1827</span>                 </span><span class="NAME">ajaxEngine.setupArguments</span><span class="PUNC">(</span><span class="NAME">args</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1828</span>                 </span><span class="NAME">ajaxEngine.queryString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">viewState</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1829</span>                 </span><span class="NAME">ajaxEngine.context.onevent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">onevent</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1830</span>                 </span><span class="NAME">ajaxEngine.context.onerror</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">onerror</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1831</span>                 </span><span class="NAME">ajaxEngine.context.sourceid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">element.id</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1832</span>                 </span><span class="NAME">ajaxEngine.context.formid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">form.id</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1833</span>                 </span><span class="NAME">ajaxEngine.context.render</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">args</span><span class="PUNC">[</span><span class="STRN">"javax.faces.partial.render"</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1834</span>                 </span><span class="NAME">ajaxEngine.sendRequest</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1835</span> 
<span class='line'>1836</span>                 </span><span class="COMM">// null out element variables to protect against IE memory leak</span><span class="WHIT">
<span class='line'>1837</span>                 </span><span class="NAME">element</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1838</span>                 </span><span class="NAME">form</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1839</span> 
<span class='line'>1840</span>             </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1841</span>             </span><span class="COMM">/**
<span class='line'>1842</span>              * &lt;p>Receive an Ajax response from the server.
<span class='line'>1843</span>              * &lt;p>&lt;b>Usage:&lt;/b>&lt;/p>
<span class='line'>1844</span>              * &lt;pre>&lt;code>
<span class='line'>1845</span>              * jsf.ajax.response(request, context);
<span class='line'>1846</span>              * &lt;/pre>&lt;/code>
<span class='line'>1847</span>              * &lt;p>&lt;b>Implementation Requirements:&lt;/b>&lt;/p>
<span class='line'>1848</span>              * This function must evaluate the markup returned in the
<span class='line'>1849</span>              * &lt;code>request.responseXML&lt;/code> object and perform the following action:
<span class='line'>1850</span>              * &lt;ul>
<span class='line'>1851</span>              * &lt;p>If there is no XML response returned, signal an &lt;code>emptyResponse&lt;/code>
<span class='line'>1852</span>              * error. If the XML response does not follow the format as outlined
<span class='line'>1853</span>              * in Appendix A of the spec prose document &lt;a
<span class='line'>1854</span>              *  href="../../javadocs/overview-summary.html#prose_document">linked in the
<span class='line'>1855</span>              *  overview summary&lt;/a> signal a &lt;code>malformedError&lt;/code> error.  Refer to
<span class='line'>1856</span>              * section "Signaling Errors" in Chapter 13 of the spec prose document &lt;a
<span class='line'>1857</span>              *  href="../../javadocs/overview-summary.html#prose_document">linked in the
<span class='line'>1858</span>              *  overview summary&lt;/a>.&lt;/p>
<span class='line'>1859</span>              * &lt;p>If the response was successfully processed, send a &lt;code>success&lt;/code>
<span class='line'>1860</span>              * event as outlined in Chapter 13 "Sending Events" section of the spec prose
<span class='line'>1861</span>              * document &lt;a
<span class='line'>1862</span>              * href="../../javadocs/overview-summary.html#prose_document">linked in the
<span class='line'>1863</span>              * overview summary&lt;/a>.&lt;/p>
<span class='line'>1864</span>              * &lt;p>&lt;i>Update Element Processing&lt;/i>&lt;/p>
<span class='line'>1865</span>              * The &lt;code>update&lt;/code> element is used to update a single DOM element.  The
<span class='line'>1866</span>              * "id" attribute of the &lt;code>update&lt;/code> element refers to the DOM element that
<span class='line'>1867</span>              * will be updated.  The contents of the &lt;code>CDATA&lt;/code> section is the data that 
<span class='line'>1868</span>              * will be used when updating the contents of the DOM element as specified by the
<span class='line'>1869</span>              * &lt;code>&lt;update&gt;&lt;/code> element identifier.
<span class='line'>1870</span>              * &lt;li>If an &lt;code>update&lt;/code> element is found in the response
<span class='line'>1871</span>              * with the identifier &lt;code>javax.faces.ViewRoot&lt;/code>:
<span class='line'>1872</span>              * &lt;pre>&lt;code>&lt;update id="javax.faces.ViewRoot"&gt;
<span class='line'>1873</span>              *    &lt;![CDATA[...]]&gt;
<span class='line'>1874</span>              * &lt;/update&gt;&lt;/code>&lt;/pre>
<span class='line'>1875</span>              * Update the entire DOM replacing the appropriate &lt;code>head&lt;/code> and/or
<span class='line'>1876</span>              * &lt;code>body&lt;/code> sections with the content from the response.&lt;/li>
<span class='line'>1877</span>              * &lt;li>If an &lt;code>update&lt;/code> element is found in the response with the identifier
<span class='line'>1878</span>              * &lt;code>javax.faces.ViewState&lt;/code>:
<span class='line'>1879</span>              * &lt;pre>&lt;code>&lt;update id="javax.faces.ViewState"&gt;
<span class='line'>1880</span>              *    &lt;![CDATA[...]]&gt;
<span class='line'>1881</span>              * &lt;/update&gt;&lt;/code>&lt;/pre>
<span class='line'>1882</span>              * locate and update the submitting form's &lt;code>javax.faces.ViewState&lt;/code> value
<span class='line'>1883</span>              * with the &lt;code>CDATA&lt;/code> contents from the response.  Locate and update the 
<span class='line'>1884</span>              * &lt;code>javax.faces.ViewState&lt;/code> value for all forms specified in the 
<span class='line'>1885</span>              * &lt;code>render&lt;/code> target list.&lt;/li>
<span class='line'>1886</span>              * &lt;li>If an &lt;code>update&lt;/code> element is found in the response with the identifier
<span class='line'>1887</span>              * &lt;code>javax.faces.ViewHead&lt;/code>:
<span class='line'>1888</span>              * &lt;pre>&lt;code>&lt;update id="javax.faces.ViewHead"&gt;
<span class='line'>1889</span>              *    &lt;![CDATA[...]]&gt;
<span class='line'>1890</span>              * &lt;/update&gt;&lt;/code>&lt;/pre>
<span class='line'>1891</span>              * update the document's &lt;code>head&lt;/code> section with the &lt;code>CDATA&lt;/code>
<span class='line'>1892</span>              * contents from the response.&lt;/li>
<span class='line'>1893</span>              * &lt;li>If an &lt;code>update&lt;/code> element is found in the response with the identifier
<span class='line'>1894</span>              * &lt;code>javax.faces.ViewBody&lt;/code>:
<span class='line'>1895</span>              * &lt;pre>&lt;code>&lt;update id="javax.faces.ViewBody"&gt;
<span class='line'>1896</span>              *    &lt;![CDATA[...]]&gt;
<span class='line'>1897</span>              * &lt;/update&gt;&lt;/code>&lt;/pre>
<span class='line'>1898</span>              * update the document's &lt;code>body&lt;/code> section with the &lt;code>CDATA&lt;/code>
<span class='line'>1899</span>              * contents from the response.&lt;/li>
<span class='line'>1900</span>              * &lt;li>For any other &lt;code>&lt;update&gt;&lt;/code> element:
<span class='line'>1901</span>              * &lt;pre>&lt;code>&lt;update id="update id"&gt;
<span class='line'>1902</span>              *    &lt;![CDATA[...]]&gt;
<span class='line'>1903</span>              * &lt;/update&gt;&lt;/code>&lt;/pre>
<span class='line'>1904</span>              * Find the DOM element with the identifier that matches the
<span class='line'>1905</span>              * &lt;code>&lt;update&gt;&lt;/code> element identifier, and replace its contents with
<span class='line'>1906</span>              * the &lt;code>&lt;update&gt;&lt;/code> element's &lt;code>CDATA&lt;/code> contents.&lt;/li>
<span class='line'>1907</span>              * &lt;/li>
<span class='line'>1908</span>              * &lt;p>&lt;i>Insert Element Processing&lt;/i>&lt;/p>
<span class='line'>1909</span>              * &lt;li>If an &lt;code>&lt;insert&gt;&lt;/code> element is found in the response with the
<span class='line'>1910</span>              * attribute &lt;code>before&lt;/code>:
<span class='line'>1911</span>              * &lt;pre>&lt;code>&lt;insert id="insert id" before="before id"&gt;
<span class='line'>1912</span>              *    &lt;![CDATA[...]]&gt;
<span class='line'>1913</span>              * &lt;/insert&gt;&lt;/code>&lt;/pre>
<span class='line'>1914</span>              * &lt;ul>
<span class='line'>1915</span>              * &lt;li>Extract this &lt;code>&lt;insert&gt;&lt;/code> element's &lt;code>CDATA&lt;/code> contents
<span class='line'>1916</span>              * from the response.&lt;/li>
<span class='line'>1917</span>              * &lt;li>Find the DOM element whose identifier matches &lt;code>before id&lt;/code> and insert
<span class='line'>1918</span>              * the &lt;code>&lt;insert&gt;&lt;/code> element's &lt;code>CDATA&lt;/code> content before
<span class='line'>1919</span>              * the DOM element in the document.&lt;/li>
<span class='line'>1920</span>              * &lt;/ul>
<span class='line'>1921</span>              * &lt;/li>
<span class='line'>1922</span>              * &lt;li>If an &lt;code>&lt;insert&gt;&lt;/code> element is found in the response with the
<span class='line'>1923</span>              * attribute &lt;code>after&lt;/code>:
<span class='line'>1924</span>              * &lt;pre>&lt;code>&lt;insert id="insert id" after="after id"&gt;
<span class='line'>1925</span>              *    &lt;![CDATA[...]]&gt;
<span class='line'>1926</span>              * &lt;/insert&gt;&lt;/code>&lt;/pre>
<span class='line'>1927</span>              * &lt;ul>
<span class='line'>1928</span>              * &lt;li>Extract this &lt;code>&lt;insert&gt;&lt;/code> element's &lt;code>CDATA&lt;/code> contents
<span class='line'>1929</span>              * from the response.&lt;/li>
<span class='line'>1930</span>              * &lt;li>Find the DOM element whose identifier matches &lt;code>after id&lt;/code> and insert
<span class='line'>1931</span>              * the &lt;code>&lt;insert&gt;&lt;/code> element's &lt;code>CDATA&lt;/code> content after
<span class='line'>1932</span>              * the DOM element in the document.&lt;/li>
<span class='line'>1933</span>              * &lt;/ul>
<span class='line'>1934</span>              * &lt;/li>
<span class='line'>1935</span>              * &lt;p>&lt;i>Delete Element Processing&lt;/i>&lt;/p>
<span class='line'>1936</span>              * &lt;li>If a &lt;code>&lt;delete&gt;&lt;/code> element is found in the response:
<span class='line'>1937</span>              * &lt;pre>&lt;code>&lt;delete id="delete id"/&gt;&lt;/code>&lt;/pre>
<span class='line'>1938</span>              * Find the DOM element whose identifier matches &lt;code>delete id&lt;/code> and remove it
<span class='line'>1939</span>              * from the DOM.&lt;/li>
<span class='line'>1940</span>              * &lt;p>&lt;i>Element Attribute Update Processing&lt;/i>&lt;/p>
<span class='line'>1941</span>              * &lt;li>If an &lt;code>&lt;attributes&gt;&lt;/code> element is found in the response:
<span class='line'>1942</span>              * &lt;pre>&lt;code>&lt;attributes id="id of element with attribute"&gt;
<span class='line'>1943</span>              *    &lt;attribute name="attribute name" value="attribute value"&gt;
<span class='line'>1944</span>              *    ...
<span class='line'>1945</span>              * &lt/attributes&gt;&lt;/code>&lt;/pre>
<span class='line'>1946</span>              * &lt;ul>
<span class='line'>1947</span>              * &lt;li>Find the DOM element that matches the &lt;code>&lt;attributes&gt;&lt;/code> identifier.&lt;/li>
<span class='line'>1948</span>              * &lt;li>For each nested &lt;code>&lt;attribute&gt;&lt;/code> element in &lt;code>&lt;attribute&gt;&lt;/code>,
<span class='line'>1949</span>              * update the DOM element attribute value (whose name matches &lt;code>attribute name&lt;/code>),
<span class='line'>1950</span>              * with &lt;code>attribute value&lt;/code>.&lt;/li>
<span class='line'>1951</span>              * &lt;/ul>
<span class='line'>1952</span>              * &lt;/li>
<span class='line'>1953</span>              * &lt;p>&lt;i>JavaScript Processing&lt;/i>&lt;/p>
<span class='line'>1954</span>              * &lt;li>If an &lt;code>&lt;eval&gt;&lt;/code> element is found in the response:
<span class='line'>1955</span>              * &lt;pre>&lt;code>&lt;eval&gt;
<span class='line'>1956</span>              *    &lt;![CDATA[...JavaScript...]]&gt;
<span class='line'>1957</span>              * &lt;/eval&gt;&lt;/code>&lt;/pre>
<span class='line'>1958</span>              * &lt;ul>
<span class='line'>1959</span>              * &lt;li>Extract this &lt;code>&lt;eval&gt;&lt;/code> element's &lt;code>CDATA&lt;/code> contents
<span class='line'>1960</span>              * from the response and execute it as if it were JavaScript code.&lt;/li>
<span class='line'>1961</span>              * &lt;/ul>
<span class='line'>1962</span>              * &lt;/li>
<span class='line'>1963</span>              * &lt;p>&lt;i>Redirect Processing&lt;/i>&lt;/p>
<span class='line'>1964</span>              * &lt;li>If a &lt;code>&lt;redirect&gt;&lt;/code> element is found in the response:
<span class='line'>1965</span>              * &lt;pre>&lt;code>&lt;redirect url="redirect url"/&gt;&lt;/code>&lt;/pre>
<span class='line'>1966</span>              * Cause a redirect to the url &lt;code>redirect url&lt;/code>.&lt;/li>
<span class='line'>1967</span>              * &lt;p>&lt;i>Error Processing&lt;/i>&lt;/p>
<span class='line'>1968</span>              * &lt;li>If an &lt;code>&lt;error&gt;&lt;/code> element is found in the response:
<span class='line'>1969</span>              * &lt;pre>&lt;code>&lt;error&gt;
<span class='line'>1970</span>              *    &lt;error-name&gt;..fully qualified class name string...&lt;error-name&gt;
<span class='line'>1971</span>              *    &lt;error-message&gt;&lt;![CDATA[...]]&gt;&lt;error-message&gt;
<span class='line'>1972</span>              * &lt;/error&gt;&lt;/code>&lt;/pre>
<span class='line'>1973</span>              * Extract this &lt;code>&lt;error&gt;&lt;/code> element's &lt;code>error-name&lt;/code> contents
<span class='line'>1974</span>              * and the &lt;code>error-message&lt;/code> contents. Signal a &lt;code>serverError&lt;/code> passing
<span class='line'>1975</span>              * the &lt;code>errorName&lt;/code> and &lt;code>errorMessage&lt;/code>.  Refer to
<span class='line'>1976</span>              * section "Signaling Errors" in Chapter 13 of the spec prose document &lt;a
<span class='line'>1977</span>              *  href="../../javadocs/overview-summary.html#prose_document">linked in the
<span class='line'>1978</span>              *  overview summary&lt;/a>.&lt;/li>
<span class='line'>1979</span>              * &lt;p>&lt;i>Extensions&lt;/i>&lt;/p>
<span class='line'>1980</span>              * &lt;li>The &lt;code>&lt;extensions&gt;&lt;/code> element provides a way for framework
<span class='line'>1981</span>              * implementations to provide their own information.&lt;/li>
<span class='line'>1982</span>              * &lt;p>&lt;li>The implementation must check if &lt;script&gt; elements in the response can
<span class='line'>1983</span>              * be automatically run, as some browsers support this feature and some do not.  
<span class='line'>1984</span>              * If they can not be run, then scripts should be extracted from the response and
<span class='line'>1985</span>              * run separately.&lt;/li>&lt;/p> 
<span class='line'>1986</span>              * &lt;/ul>
<span class='line'>1987</span>              *
<span class='line'>1988</span>              * &lt;/p>
<span class='line'>1989</span>              *
<span class='line'>1990</span>              * @param request The &lt;code>XMLHttpRequest&lt;/code> instance that
<span class='line'>1991</span>              * contains the status code and response message from the server.
<span class='line'>1992</span>              *
<span class='line'>1993</span>              * @param context An object containing the request context, including the following properties:
<span class='line'>1994</span>              * the source element, per call onerror callback function, and per call onevent callback function.
<span class='line'>1995</span>              *
<span class='line'>1996</span>              * @throws  Error if request contains no data
<span class='line'>1997</span>              *
<span class='line'>1998</span>              * @function jsf.ajax.response
<span class='line'>1999</span>              */</span><span class="WHIT">
<span class='line'>2000</span>             </span><span class="NAME">response</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">response</span><span class="PUNC">(</span><span class="NAME">request</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2001</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">request</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2002</span>                     </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"jsf.ajax.response: Request parameter is unset"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2003</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2004</span> 
<span class='line'>2005</span>                 </span><span class="COMM">// ensure context source is the dom element and not the ID</span><span class="WHIT">
<span class='line'>2006</span>                 </span><span class="COMM">// per 14.4.1 of the 2.0 specification.  We're doing it here</span><span class="WHIT">
<span class='line'>2007</span>                 </span><span class="COMM">// *before* any errors or events are propagated becasue the</span><span class="WHIT">
<span class='line'>2008</span>                 </span><span class="COMM">// DOM element may be removed after the update has been processed.</span><span class="WHIT">
<span class='line'>2009</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">context.sourceid</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'string'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2010</span>                     </span><span class="NAME">context.sourceid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.getElementById</span><span class="PUNC">(</span><span class="NAME">context.sourceid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2011</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2012</span> 
<span class='line'>2013</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">xml</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">request.responseXML</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2014</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">xml</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2015</span>                     </span><span class="NAME">sendError</span><span class="PUNC">(</span><span class="NAME">request</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"emptyResponse"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2016</span>                     </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2017</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2018</span> 
<span class='line'>2019</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">getParseErrorText</span><span class="PUNC">(</span><span class="NAME">xml</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">PARSED_OK</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2020</span>                     </span><span class="NAME">sendError</span><span class="PUNC">(</span><span class="NAME">request</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"malformedXML"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2021</span>                     </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2022</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2023</span> 
<span class='line'>2024</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">responseType</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">xml.getElementsByTagName</span><span class="PUNC">(</span><span class="STRN">"partial-response"</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">firstChild</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2025</span> 
<span class='line'>2026</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">responseType.nodeName</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"error"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// it's an error</span><span class="WHIT">
<span class='line'>2027</span>                     </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">errorName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">responseType.firstChild.firstChild.nodeValue</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2028</span>                     </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">errorMessage</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">responseType.firstChild.nextSibling.firstChild.nodeValue</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2029</span>                     </span><span class="NAME">sendError</span><span class="PUNC">(</span><span class="NAME">request</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"serverError"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">errorName</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">errorMessage</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2030</span>                     </span><span class="NAME">sendEvent</span><span class="PUNC">(</span><span class="NAME">request</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"success"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2031</span>                     </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2032</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2033</span> 
<span class='line'>2034</span> 
<span class='line'>2035</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">responseType.nodeName</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"redirect"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2036</span>                     </span><span class="NAME">window.location</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">responseType.getAttribute</span><span class="PUNC">(</span><span class="STRN">"url"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2037</span>                     </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2038</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2039</span> 
<span class='line'>2040</span> 
<span class='line'>2041</span>                 </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">responseType.nodeName</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">"changes"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2042</span>                     </span><span class="NAME">sendError</span><span class="PUNC">(</span><span class="NAME">request</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"malformedXML"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Top level node must be one of: changes, redirect, error, received: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">responseType.nodeName</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" instead."</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2043</span>                     </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2044</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2045</span> 
<span class='line'>2046</span> 
<span class='line'>2047</span>                 </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">changes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">responseType.childNodes</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2048</span> 
<span class='line'>2049</span>                 </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2050</span>                     </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">changes.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2051</span>                         </span><span class="KEYW">switch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">changes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">nodeName</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2052</span>                             </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">"update"</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2053</span>                                 </span><span class="NAME">doUpdate</span><span class="PUNC">(</span><span class="NAME">changes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2054</span>                                 </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2055</span>                             </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">"delete"</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2056</span>                                 </span><span class="NAME">doDelete</span><span class="PUNC">(</span><span class="NAME">changes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2057</span>                                 </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2058</span>                             </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">"insert"</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2059</span>                                 </span><span class="NAME">doInsert</span><span class="PUNC">(</span><span class="NAME">changes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2060</span>                                 </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2061</span>                             </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">"attributes"</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2062</span>                                 </span><span class="NAME">doAttributes</span><span class="PUNC">(</span><span class="NAME">changes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2063</span>                                 </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2064</span>                             </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">"eval"</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2065</span>                                 </span><span class="NAME">doEval</span><span class="PUNC">(</span><span class="NAME">changes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2066</span>                                 </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2067</span>                             </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">"extension"</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2068</span>                                 </span><span class="COMM">// no action</span><span class="WHIT">
<span class='line'>2069</span>                                 </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2070</span>                             </span><span class="KEYW">default</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2071</span>                                 </span><span class="NAME">sendError</span><span class="PUNC">(</span><span class="NAME">request</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"malformedXML"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Changes allowed are: update, delete, insert, attributes, eval, extension.  Received "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">changes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">nodeName</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" instead."</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2072</span>                                 </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2073</span>                         </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2074</span>                     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2075</span>                 </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ex</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2076</span>                     </span><span class="NAME">sendError</span><span class="PUNC">(</span><span class="NAME">request</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"malformedXML"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ex.message</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2077</span>                     </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2078</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2079</span>                 </span><span class="NAME">sendEvent</span><span class="PUNC">(</span><span class="NAME">request</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"success"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2080</span> 
<span class='line'>2081</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2082</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2083</span>     </span><span class="PUNC">}</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2084</span> 
<span class='line'>2085</span>     </span><span class="COMM">/**
<span class='line'>2086</span>      *
<span class='line'>2087</span>      * &lt;p>Return the value of &lt;code>Application.getProjectStage()&lt;/code> for
<span class='line'>2088</span>      * the currently running application instance.  Calling this method must
<span class='line'>2089</span>      * not cause any network transaction to happen to the server.&lt;/p>
<span class='line'>2090</span>      * &lt;p>&lt;b>Usage:&lt;/b>&lt;/p>
<span class='line'>2091</span>      * &lt;pre>&lt;code>
<span class='line'>2092</span>      * var stage = jsf.getProjectStage();
<span class='line'>2093</span>      * if (stage === ProjectStage.Development) {
<span class='line'>2094</span>      *  ...
<span class='line'>2095</span>      * } else if stage === ProjectStage.Production) {
<span class='line'>2096</span>      *  ...
<span class='line'>2097</span>      * }
<span class='line'>2098</span>      * &lt;/code>&lt;/pre>
<span class='line'>2099</span>      *
<span class='line'>2100</span>      * @returns String &lt;code>String&lt;/code> representing the current state of the
<span class='line'>2101</span>      * running application in a typical product development lifecycle.  Refer
<span class='line'>2102</span>      * to &lt;code>javax.faces.application.Application.getProjectStage&lt;/code> and
<span class='line'>2103</span>      * &lt;code>javax.faces.application.ProjectStage&lt;/code>.
<span class='line'>2104</span>      * @function jsf.getProjectStage
<span class='line'>2105</span>      */</span><span class="WHIT">
<span class='line'>2106</span>     </span><span class="NAME">jsf.getProjectStage</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2107</span>         </span><span class="COMM">// First, return cached value if available</span><span class="WHIT">
<span class='line'>2108</span>         </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">mojarra</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">mojarra.projectStageCache</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2109</span>             </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">mojarra.projectStageCache</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2110</span>         </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2111</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">scripts</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.getElementsByTagName</span><span class="PUNC">(</span><span class="STRN">"script"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// nodelist of scripts</span><span class="WHIT">
<span class='line'>2112</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">script</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// jsf.js script</span><span class="WHIT">
<span class='line'>2113</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// incremental variable for for loop</span><span class="WHIT">
<span class='line'>2114</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">stage</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// temp value for stage</span><span class="WHIT">
<span class='line'>2115</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">match</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// temp value for match</span><span class="WHIT">
<span class='line'>2116</span>         </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">scripts.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2117</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">scripts</span><span class="PUNC">[</span><span class="NAME">s</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">src</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'string'</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">scripts</span><span class="PUNC">[</span><span class="NAME">s</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">src.match</span><span class="PUNC">(</span><span class="STRN">'\/javax\.faces\.resource\/jsf\.js\?.*ln=javax\.faces'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2118</span>                 </span><span class="NAME">script</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">scripts</span><span class="PUNC">[</span><span class="NAME">s</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">src</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2119</span>                 </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2120</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2121</span>             </span><span class="NAME">s</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2122</span>         </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2123</span>         </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">script</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2124</span>             </span><span class="NAME">match</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">script.match</span><span class="PUNC">(</span><span class="STRN">"stage=(.*)"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2125</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">match</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2126</span>                 </span><span class="NAME">stage</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">match</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2127</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2128</span>         </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2129</span>         </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">stage</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">stage</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2130</span>             </span><span class="NAME">stage</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Production"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2131</span>         </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2132</span> 
<span class='line'>2133</span>         </span><span class="NAME">mojarra</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">mojarra</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2134</span>         </span><span class="NAME">mojarra.projectStageCache</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">stage</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2135</span> 
<span class='line'>2136</span>         </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">mojarra.projectStageCache</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2137</span>     </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2138</span> 
<span class='line'>2139</span> 
<span class='line'>2140</span>     </span><span class="COMM">/**
<span class='line'>2141</span>      * &lt;p>Collect and encode state for input controls associated
<span class='line'>2142</span>      * with the specified &lt;code>form&lt;/code> element.  This will include
<span class='line'>2143</span>      * all input controls of type &lt;code>hidden&lt;/code>.&lt;/p>
<span class='line'>2144</span>      * &lt;p>&lt;b>Usage:&lt;/b>&lt;/p>
<span class='line'>2145</span>      * &lt;pre>&lt;code>
<span class='line'>2146</span>      * var state = jsf.getViewState(form);
<span class='line'>2147</span>      * &lt;/pre>&lt;/code>
<span class='line'>2148</span>      *
<span class='line'>2149</span>      * @param form The &lt;code>form&lt;/code> element whose contained
<span class='line'>2150</span>      * &lt;code>input&lt;/code> controls will be collected and encoded.
<span class='line'>2151</span>      * Only successful controls will be collected and encoded in
<span class='line'>2152</span>      * accordance with: &lt;a href="http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2">
<span class='line'>2153</span>      * Section 17.13.2 of the HTML Specification&lt;/a>.
<span class='line'>2154</span>      *
<span class='line'>2155</span>      * @returns String The encoded state for the specified form's input controls.
<span class='line'>2156</span>      * @function jsf.getViewState
<span class='line'>2157</span>      */</span><span class="WHIT">
<span class='line'>2158</span>     </span><span class="NAME">jsf.getViewState</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">form</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2159</span>         </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">form</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2160</span>             </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"jsf.getViewState:  form must be set"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2161</span>         </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2162</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">els</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">form.elements</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2163</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">els.length</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2164</span>         </span><span class="COMM">// create an array which we'll use to hold all the intermediate strings</span><span class="WHIT">
<span class='line'>2165</span>         </span><span class="COMM">// this bypasses a problem in IE when repeatedly concatenating very</span><span class="WHIT">
<span class='line'>2166</span>         </span><span class="COMM">// large strings - we'll perform the concatenation once at the end</span><span class="WHIT">
<span class='line'>2167</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">qString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2168</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">addField</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2169</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tmpStr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2170</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">qString.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2171</span>                 </span><span class="NAME">tmpStr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"&"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2172</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2173</span>             </span><span class="NAME">tmpStr</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">encodeURIComponent</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">encodeURIComponent</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2174</span>             </span><span class="NAME">qString.push</span><span class="PUNC">(</span><span class="NAME">tmpStr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2175</span>         </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2176</span>         </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2177</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">el</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">els</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2178</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">el.disabled</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2179</span>                 </span><span class="KEYW">switch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">el.type</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2180</span>                     </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'text'</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2181</span>                     </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'password'</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2182</span>                     </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'hidden'</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2183</span>                     </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'textarea'</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2184</span>                         </span><span class="NAME">addField</span><span class="PUNC">(</span><span class="NAME">el.name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">el.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2185</span>                         </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2186</span>                     </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'select-one'</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2187</span>                         </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">el.selectedIndex</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2188</span>                             </span><span class="NAME">addField</span><span class="PUNC">(</span><span class="NAME">el.name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">el.options</span><span class="PUNC">[</span><span class="NAME">el.selectedIndex</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2189</span>                         </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2190</span>                         </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2191</span>                     </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'select-multiple'</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2192</span>                         </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">el.options.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">j</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2193</span>                             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">el.options</span><span class="PUNC">[</span><span class="NAME">j</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">selected</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2194</span>                                 </span><span class="NAME">addField</span><span class="PUNC">(</span><span class="NAME">el.name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">el.options</span><span class="PUNC">[</span><span class="NAME">j</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2195</span>                             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2196</span>                         </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2197</span>                         </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2198</span>                     </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'checkbox'</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2199</span>                     </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'radio'</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2200</span>                         </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">el.checked</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2201</span>                             </span><span class="NAME">addField</span><span class="PUNC">(</span><span class="NAME">el.name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">el.value</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="STRN">'on'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2202</span>                         </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2203</span>                         </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2204</span>                 </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2205</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2206</span>         </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2207</span>         </span><span class="COMM">// concatenate the array</span><span class="WHIT">
<span class='line'>2208</span>         </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">qString.join</span><span class="PUNC">(</span><span class="STRN">""</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2209</span>     </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2210</span> 
<span class='line'>2211</span>     </span><span class="COMM">/**
<span class='line'>2212</span>      * The namespace for JavaServer Faces JavaScript utilities.
<span class='line'>2213</span>      * @name jsf.util
<span class='line'>2214</span>      * @namespace
<span class='line'>2215</span>      */</span><span class="WHIT">
<span class='line'>2216</span>     </span><span class="NAME">jsf.util</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2217</span> 
<span class='line'>2218</span>     </span><span class="COMM">/**
<span class='line'>2219</span>      * &lt;p>A varargs function that invokes an arbitrary number of scripts.
<span class='line'>2220</span>      * If any script in the chain returns false, the chain is short-circuited
<span class='line'>2221</span>      * and subsequent scripts are not invoked.  Any number of scripts may
<span class='line'>2222</span>      * specified after the &lt;code>event&lt;/code> argument.&lt;/p>
<span class='line'>2223</span>      *
<span class='line'>2224</span>      * @param source The DOM element that triggered this Ajax request, or an
<span class='line'>2225</span>      * id string of the element to use as the triggering element.
<span class='line'>2226</span>      * @param event The DOM event that triggered this Ajax request.  The
<span class='line'>2227</span>      * &lt;code>event&lt;/code> argument is optional.
<span class='line'>2228</span>      *
<span class='line'>2229</span>      * @returns boolean &lt;code>false&lt;/code> if any scripts in the chain return &lt;code>false&lt;/code>,
<span class='line'>2230</span>      *  otherwise returns &lt;code>true&lt;/code>
<span class='line'>2231</span>      * 
<span class='line'>2232</span>      * @function jsf.util.chain
<span class='line'>2233</span>      */</span><span class="WHIT">
<span class='line'>2234</span>     </span><span class="NAME">jsf.util.chain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">source</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2235</span> 
<span class='line'>2236</span>         </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">arguments.length</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2237</span>             </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2238</span>         </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2239</span> 
<span class='line'>2240</span>         </span><span class="COMM">// RELEASE_PENDING rogerk - shouldn't this be getElementById instead of null</span><span class="WHIT">
<span class='line'>2241</span>         </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">thisArg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">source</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'object'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">source</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2242</span> 
<span class='line'>2243</span>         </span><span class="COMM">// Call back any scripts that were passed in</span><span class="WHIT">
<span class='line'>2244</span>         </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">arguments.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2245</span> 
<span class='line'>2246</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">f</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Function</span><span class="PUNC">(</span><span class="STRN">"event"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2247</span>             </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">returnValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">f.call</span><span class="PUNC">(</span><span class="NAME">thisArg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">event</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2248</span> 
<span class='line'>2249</span>             </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">returnValue</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2250</span>                 </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2251</span>             </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2252</span>         </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2253</span>         </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2254</span>         
<span class='line'>2255</span>     </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2256</span> 
<span class='line'>2257</span>     </span><span class="COMM">/**
<span class='line'>2258</span>      * &lt;p>An integer specifying the specification version that this file implements.
<span class='line'>2259</span>      * It's format is: rightmost two digits, bug release number, next two digits,
<span class='line'>2260</span>      * minor release number, leftmost digits, major release number.
<span class='line'>2261</span>      * This number may only be incremented by a new release of the specification.&lt;/p>
<span class='line'>2262</span>      */</span><span class="WHIT">
<span class='line'>2263</span>     </span><span class="NAME">jsf.specversion</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">20000</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2264</span> 
<span class='line'>2265</span>     </span><span class="COMM">/**
<span class='line'>2266</span>      * &lt;p>An integer specifying the implementation version that this file implements.
<span class='line'>2267</span>      * It's a monotonically increasing number, reset with every increment of
<span class='line'>2268</span>      * &lt;code>jsf.specversion&lt;/code>
<span class='line'>2269</span>      * This number is implementation dependent.&lt;/p>
<span class='line'>2270</span>      */</span><span class="WHIT">
<span class='line'>2271</span>     </span><span class="NAME">jsf.implversion</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2272</span> 
<span class='line'>2273</span> 
<span class='line'>2274</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="COMM">//end if version detection block</span><span class="WHIT">
<span class='line'>2275</span> </span></pre></body></html>